KMCGeigerCounter
该工具是一个帧率计,当您的动画掉帧时,它会像盖革计数器一样发出咔哒声。
盖革计数器可以检测看不见的粒子,并警告您您看不见的东西。掉帧并不是看不见的,但很难区分 55 和 60 fps。KMCGeigerCounter 使得每个掉帧都显而易见。
- 如果您不是一直在平滑地动画,您会听到嘈杂、刺耳的噪音。
- 如果您的应用程序以平滑的 60 fps 运行,您偶尔会听到下降到 59 和 58 的声音。
- 您将听到来自偶尔 CPU 峰值掉帧的声音,例如自定义表格视图单元进入屏幕并需要布局时。
仪器显示两个数字
- 过去一秒钟内掉落的帧数
- 过去一秒钟内绘制的帧数
如果您过去一秒钟至少掉落了三帧,则仪器将变为橙色。
安装
pod 'KMCGeigerCounter'
或者将以下文件复制到您的项目中
- KMCGeigerCounter.h
- KMCGeigerCounter.m
- KMCGeigerCounter.aiff
如果您不使用 CocoaPods,您可能需要在 Link Binary With Libraries 构建阶段添加此框架
- AudioToolbox.framework
使用方法
在您的 UIApplicationDelegate
中,启用此工具
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// …
[self.window makeKeyAndVisible];
[KMCGeigerCounter sharedGeigerCounter].enabled = YES;
}
构建并运行您的应用。浏览您的应用并侦听点击。
已知的标识问题
iOS上的卡顿可分为两种类型,我将它们称为CPU和GPU卡顿。CPU卡顿发生在主线程活动延迟准备层树时,例如当Auto Layout评估一组复杂的约束时。可以通过观察主线程上定期安排的事件的交付时间轻松测量CPU卡顿。GPU卡顿发生在层树绘制开销很大时,例如当存在过多的混合层。由于iOS的特性,GPU卡顿发生在负责绘制的系统进程中。我还没有找到一种在不影响应用帧率的情况下测量它们的方法。总结一下,如今只能通过此库检测CPU卡顿。幸运的是,更强大的iOS设备使得GPU卡顿比过去少得多,您始终可以使用Core Animation工具来准确测量它们。
注意
请务必关闭静音模式,否则您将听不到任何声音。
在发布到应用商店之前,您应该删除KMCGeigerCounter。它可能对电池寿命不利。
iOS模拟器不会模拟设备性能,因此请考虑仅在设备构建时启用此工具
#if !TARGET_IPHONE_SIMULATOR
[KMCGeigerCounter sharedGeigerCounter].enabled = YES;
#endif