GDXProfiler是一个简单的基于MTU(Mach时间单位)的Objective-C时间分析库。您可以在任何时候创建一个新的分析器,并随时记录任意的“安全位置”计数,直到您停止它。您只需要保持对已创建的分析器的强引用,直到它停止。
GDXProfiler使用标准的NSLog()
函数来同步地把您的位置打印在主线程中,以保持记录的任何时间点都是最新的。
或者,您可以直接将源文件 GDXProfiler.h
和 GDXProfiler.m
添加到您的项目中。
GDXProfiler.h
和 GDXProfiler.m
拖放到项目上(在提取代码存档时,如果被提示,请选择Copy items)。#import "GDXProfiler.h"
。当您想开始分析一些关键代码时,只需调用静态方法来启动一个新的分析器。
GDXProfiler *profiler = [GDXProfiler startWithMessage:@"I'm profiling my special code!"];
// or use shorter version
GDXProfiler *profiler = [GDXProfiler 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:
函数来更新现有的分析器并再次使用它。
您可以创建尽可能多的分析器,只需确保您保持对它们的强引用。
使用GDXProfiler操作线程是自由的。GDXProfiler使用标准的NSLog()
函数来打印您的日志,并使用系统函数来测量时间。请记住,您应该使用与创建它们相同的线程来使用您的分析器。
GDXProfiler
有一个自己的NSLog()
函数包装宏,称为GDXDLog()
,在发布模式中会自动禁用,因为在生产项目方案中移除了自动DEBUG
预处理器常量。
您可以在示例
文件夹中找到示例应用程序。
Apache许可证。有关详细信息,请参阅LICENSE
。