benchmark

作者: 寻雨的人 | 来源:发表于2016-12-12 16:38 被阅读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);

    }

    相关文章

      网友评论

          本文标题:benchmark

          本文链接:https://www.haomeiwen.com/subject/oawmmttx.html