为什么在我的应用程序启动期间CPU空闲2.5秒?

时间:2019-06-20 23:01:20

标签: profiling apple-watch instruments watch-os

我正在尝试减少Apple Watch应用程序的启动时间。使用Instruments中的Time Profiler在物理设备(系列2)上进行测试,我可以看到大约需要5秒钟才能达到前台状态。在这段时间内,CPU显然处于空闲状态2.5秒钟。请参见此screenshot from Time Profiler中的时间轴间隔,介于0.5和3秒之间。 这是怎么回事?我可以删除或缩短此空闲时间以使我的应用启动更快吗?

我的Swift代码中首先运行的部分-ExtensionDelegate.init()-在4.5秒时执行,因此问题必须与某些较早的初始化或库加载有关。以下屏幕截图显示了在空闲间隔之前和之后进行哪些系统调用。

System calls before idle interval
System calls just after idle interval

我尝试禁用应用程序的以下部分,但未看到任何重大改进:

  • 情节提要中的大多数项目
  • 所有并发症
  • 扩展捆绑中的媒体资产
  • 所有SpriteKit相关代码

在模拟器中运行时,问题消失了。该应用程序将在约1.5秒内达到“前台”状态,并且没有CPU空闲时间。

我在WatchKit Extension中使用以下导入声明和类:

// ExtensionDelegate.swift
import WatchKit
class ExtensionDelegate: NSObject, WKExtensionDelegate {...}
// InterfaceController.swift
import WatchKit
import Foundation
import SpriteKit
class InterfaceController: WKInterfaceController {...}
// NotificationController.swift
import WatchKit
import Foundation
import UserNotifications
class NotificationController: WKUserNotificationInterfaceController {...}
// ComplicationController.swift
import ClockKit
class ComplicationController: NSObject, CLKComplicationDataSource {...}

0 个答案:

没有答案