DDLTimeProfiler 是一个基于 Objective-C 中 MTU(Mach Time Units)的简单时间分析库。您可以在任何时间创建一个新的分析器,并在需要时记录任何数量的“安全点”,直到您停止它。您只需要保留创建的分析器的强引用,直到它停止。
DDLTimeProfiler 使用标准的 NSLog()
函数将您的功能点同步地打印到主线程中,以保持日志在任何时间都是最新的。
或者,您可以直接将 DDLTimeProfiler.h
和 DDLTimeProfiler.m
源文件添加到您的项目中。
DDLTimeProfiler.h
和 DDLTimeProfiler.m
到您的项目(使用“Product Navigator 视图”)。如果您在项目外部提取了代码档案,确保在提示时选择复制项目。#import "DDLTimeProfiler.h"
在您需要的位置包含 DDLTimeProfiler。当您想要分析一些关键代码时,只需通过调用静态方法来启动一个新的分析器
DDLTimeProfiler *profiler = [DDLTimeProfiler startWithMessage:@"I'm profiling my special code!"];
// or use shorter version
DDLTimeProfiler *profiler = [DDLTimeProfiler 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
创建一个新的分析器,不再需要保留对已停止分析器的强引用。
您可以创建任意数量的分析器,只需确保您保留它们的强引用。
DDLTimeProfiler 使用标准的 NSLog()
函数来打印日志,以及用到系统函数来测量时间,但是您必须保留您创建的每个分析器的强引用,因此它不是线程安全的。您应该记住在创建分析器的同一线程中使用您的分析器。
您可以在 示例
文件夹中找到示例应用程序。
MIT。请参见 LICENSE
了解详细信息。