benchmark

2016-12-12  本文已影响25人  寻雨的人

函数性能测试工具

经常,我们在设计一个架构或者技术方案的时候,需要应用到某个容器或者算法,这个时候,我们往往会考虑其性能对架构或技术方案的影响。因此,我们有必要好好验证一下。

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);

}

上一篇下一篇

猜你喜欢

热点阅读