当我试图优化应用程序的启动时间时,我发现一个有趣的事实,即 iPhone 6s 所需的 pre-main 时间实际上比 iPhone 6 plus(热启动)要长得多。
在 iPhone 6 plus 上,它看起来像这样:
Total pre-main time: 241.93 milliseconds (100.0%)
dylib loading time: 74.81 milliseconds (30.9%)
rebase/binding time: 15.96 milliseconds (6.6%)
ObjC setup time: 23.67 milliseconds (9.7%)
initializer time: 127.31 milliseconds (52.6%)
slowest intializers :
libSystem.B.dylib : 7.21 milliseconds (2.9%)
libBacktraceRecording.dylib : 5.97 milliseconds (2.4%)
AirshipKit : 5.17 milliseconds (2.1%)
My App : 199.60 milliseconds (82.5%)
然而,在 iPhone 6s 上,它的时间增加了两倍:
Total pre-main time: 891.80 milliseconds (100.0%)
dylib loading time: 680.36 milliseconds (76.2%)
rebase/binding time: 59.18 milliseconds (6.6%)
ObjC setup time: 42.74 milliseconds (4.7%)
initializer time: 109.43 milliseconds (12.2%)
slowest intializers :
libSystem.B.dylib : 7.36 milliseconds (0.8%)
My App : 147.96 milliseconds (16.5%)
它们都在同一系统上运行(iOS 10.3)。我认为 iPhone 6s 比 6 plus 拥有更大的内存和更好的 CPU。但我不明白为什么实际上需要更长的时间才能完成 pre-main 任务。
谁能给我一些提示?谢谢!
PS:我确实尝试了几次。