NRGProfiler 是一个基于 MTU(Mach 时间单元)的简单的Objective-C性能分析库。您可以在任何需要的时候创建新的分析器,并记录任意数量的“安全区域”,直到您停止它。您只需要保持对新创建的分析器的强引用,直到它停止。
NRGProfiler 使用标准的 NSLog()
函数来同步地将您的日志打印到主线程,以便在任何时候保持日志的最新性。
或者您可以直接将 NRGProfiler.h
和 NRGProfiler.m
源文件添加到您的项目中。
NRGProfiler.h
和 NRGProfiler.m
拖放到您的项目中(使用“产品导航视图”)。如果您在项目外部解压缩了代码存档,确保在询问时选择复制项。#import "NRGProfiler.h"
将 NRGProfiler 添加到您需要的位置。当您想要开始对一些关键代码进行分析时,只需调用静态方法来启动一个新的分析器。
NRGProfiler *profiler = [NRGProfiler startWithMessage:@"I'm profiling my special code!"];
// or use shorter version
NRGProfiler *profiler = [NRGProfiler start];
请注意,如果不需要输入消息,您可以使用简短的方法版本。库中的每个方法都有详细和简短版本。
现在分析已经开始。当您需要记录一个位置时,只需调用这个
[profiler pointWithMessage:@"I've finished some kind of work!"];
如果您保存了点值(点值以秒的形式存储,以纳秒为单位的精度转换) - 您可以使用它进行进一步测量。例如,在这种情况下
double p1 = [profiler point];
// some critical code block
// ...
double p2 = [profiler point];
NSLog(@"My critical code passed in %.3f", p2 - p1); // just subtract them
当您想要完成您的测量时,通过调用 stop
来停止分析器。
[profiler stopWithMessage:@"Some profiling finished!"];
停止后,您可以像上面看到的那样通过调用 start
来创建一个新的分析器,不再需要保持已停止分析器的强引用。您还可以使用 restart
或 restartWithMessage:
函数来更新现有的分析器,再次使用它。
您可以创建任意多个分析器,只需确保您保留对它们的强引用。
您在操作线程时对 NRGProfiler 是自由的。NRGProfiler 使用标准的 NSLog()
函数打印日志并使用系统函数来测量时间。您应该记住,在创建它们的同一线程中使用您的分析器。
NRGProfiler
有一个自己的宏包装的NSLog()
函数,称为NRGDLog()
,在生产模式下将自动禁用,因为Release项目方案会自动删除预处理器常量DEBUG
。
您可以在示例
文件夹中找到示例应用程序。
Apache。有关详细信息,请参阅LICENSE
文件。