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

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (http://upload-images.jianshu.io/upload_images/1197386-a0...
    光明程辉阅读 3,538评论 1 8
  • 关键时刻,第一时间送达! 问题种类 时间复杂度 在集合里数据量小的情况下时间复杂度对于性能的影响看起来微乎其微。但...
    C9090阅读 917评论 0 1
  • 原文 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新。 1.UITableView的Group...
    无沣阅读 794评论 0 2
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,210评论 30 471
  • 做销售就是做人品,人格无价诚可贵,事业有成信当先。人之交往在于诚,世之安宁要靠信。诚信是品牌,是信誉,更是竞争力。
    石头藤藤阅读 183评论 0 0