dispatch_benchmark

使用 dispatch_benchmark() 函数可以测算代码执行时间。dispatch_benchmark() 并未公开,需要开发者自己声明。

extern uint64_t dispatch_benchmark(size_t count, void (^block)(void));

- (void)viewDidLoad {
[super viewDidLoad];

size_t const objectCount = 1000;

// 10000 表示 block 要执行次数
// n 返回 block 执行一次的平均值
uint64_t n = dispatch_benchmark(10000, ^{
// 最好是将测试 block 手动放入自动释放池,因为 block 每次都会生成一些局部变量,测试次数又很大,如果不放入自动释放池,栈可能被撑爆。虽然 @autoreleasepool 会增加时间。
@autoreleasepool {
id obj = @42;
NSMutableArray *array = [NSMutableArray array];
for (size_t i = 0; i < objectCount; ++i) {
[array addObject:obj];
}
}

});
NSLog(@"-[NSMutableArray addObject:] : %llu ns", n);
}

代码执行时间介绍

posted @ 2017-05-10 13:38  上水的花  阅读(369)  评论(0)    收藏  举报