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  上水的花  阅读(345)  评论(0编辑  收藏  举报