benchmark
函数性能测试工具
经常,我们在设计一个架构或者技术方案的时候,需要应用到某个容器或者算法,这个时候,我们往往会考虑其性能对架构或技术方案的影响。因此,我们有必要好好验证一下。
dispatch的角落,被放置着这样一个工具,你可以通过它对某段代码执行若干次并得到执行一次的平均时间,听起来是不是很有用?
函数声明
extern uint64_t dispatch_benchmark(size_tcount, void(^block)(void));
应用举例
NSObject*object = [NSObject new];
uint64_tt_0 =dispatch_benchmark(1, ^{
@autoreleasepool{
NSMutableArray*mutableArray = [NSMutableArray array];
for(size_ti =0; i <10000; i++) {
[mutableArray addObject:object];
}
}
});
NSLog(@"[[NSMutableArray array] addObject:] Avg. Runtime: %llu ns", t_0);
2016-12-12 16:27:18.763963 JSCallOCOperationDemo[7860:292800] [[NSMutableArray arrayWithCapacity] addObject:] Avg. Runtime: 420784 ns
确实很高效!那,如果我们不知道有这么个私有工具怎么办?
常规做法
NSMutableArray*mutableArray = [NSMutableArray array];
CFTimeInterval startTime = CACurrentMediaTime();
{
for(size_ti =0; i <10000; i++) {
[mutableArray addObject:object];
}
CFTimeInterval endTime =CACurrentMediaTime();
NSLog(@"Total Runtime: %g s", endTime - startTime);
}