まとーか鈴木

千の姿と千の技と千の風

dispatch_benchmarkによるパフォーマンス計測

久々の更新になってしまった(´Д⊂

objc.ioの記事の中に、dispatch_benchmarkという関数を使っている記述を発見。

objc.io Low-Level Concurrency APIs

こんな感じ。

// 引数は回数と、計測したい処理のブロック
uint64_t dispatch_benchmark(size_t count, void (^block)(void));
    uint64_t n = dispatch_benchmark(10000,^{
        NSMutableArray* array = [NSMutableArray array];
        [array addObject:@"hoge"];
    });
    NSLog(@"n = %llu [ns]",n);

for文やenumrate〜で回すよりこっちの方がカッコ良いかも。

用途はデバッグとパフォーマンス計測のみ

この関数は非公開APIになっている。

当たり前だけど、製品版のソースには入れてはいけない。

dispatch_benchmark Appleドキュメント