0

我开发了一个适用于 iPhone-3GS、iPhone-4、iPhone-4S 的应用程序。

启动过程,iPhone-4s 需要 30 秒, iPhone-3gs需要50-55 秒。在同一网络上测试。(它不是与网络或互联网有关的问题;在模拟器中只需要 5 秒。

在这个启动过程中,App 会执行一些操作,例如从数据库中删除旧数据、调用 WebService 并将响应数据插入到数据库中。应用程序使用 performSelectorOnMainThread 方法(顺序)在主线程上调用近 8 个 Web 服务。

我正在使用 SQLite 和编译查询结构进行插入。我想提高应用程序的性能,并希望减少应用程序的启动时间。

Android 团队使用相同的后端,他们也在做同样的事情。仅在 Galaxy note 上需要 20 秒(团队 android 正在使用对象关系模式与 Sqlite 数据库进行通信)

这是性能更快的原因吗?

在处理 Sqlite(特定于处理器,耗时更少)时,是否有任何与 Java 中的 ORM 相同的方法来提高 Objective-C 的性能?

4

2 回答 2

1

首先,您不应该在主线程上进行网络操作(Web 服务调用)。这应该在后台线程上完成。我对直接使用 SQLite 知之甚少,但使用 CoreData,您可以在后台线程上进行“数据库”更新,然后使用主线程将两者合并ManagedObjectContexts

我想将您的 WS 调用移动到后台线程(顺便说一句,AFNetworking 是一个很棒的框架),您会看到很多改进。

我的一个例子是一个基于 Web 服务的应用程序,它从 SQL Server DB 获取 7000 条记录并创建一个 NSArray(数据以 JSON 形式出现),该过程需要 7-10 秒。我通过同时执行我的自动身份验证过程进一步减少对用户的影响。

30 秒太长,无法让用户等待 IMO。

于 2012-10-29T13:11:38.503 回答
1

此处提供 14 个最佳技巧提高 iOS 应用性能的最佳步骤

在本教程中,第 13 点提供了您需要的信息。

于 2015-01-03T15:32:22.767 回答