ios - 在队列上运行一个空 block 的开销是多少

标签 ios

我意识到我在排队很多调用空方法的 block 。在调试器中,当所有 block 都为空时,似乎发生了很多事情。

空 block 对性能有实际影响吗?

最佳答案

开销应该可以忽略不计:您可以使用 Instruments 和一个简单的程序来检查这一点:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
        void (^b)(void) = ^{ };
        double d = 2.0;

        for(int i = 0; i < 10000000; ++i) {
            dispatch_sync(q, b);
            d = d * 1.5 - 1.0;
        }
        NSLog(@"d = %.3f", d);
    }
    return 0;
}

正如您在 Instruments 堆栈跟踪中看到的那样,调用需要 40 毫秒才能对一个空 block 进行 1000 万次同步调用。开销不大。

enter image description here

关于ios - 在队列上运行一个空 block 的开销是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48497146/

相关文章:

iOS - 导航 Controller 和自定义 View

ios - 尝试设置 PFUser 的个人资料图片时出现 fatal error

带有团队代理证书的 iPhone 临时分发

android - 如何在chrome手机浏览器中查看网络选项卡相关信息

ios - 让Universal (iPhone+iPad) app run on iPhone storyboard on iPad (simulated size)

ios - CGRectIntersectsRect 中的 prepareforsegue

iphone - 使用贝塞尔曲线路径自定义裁剪图像

ios - 快速自定义 map 类

ios - Xcode 在打开 Storyboard 时崩溃

ios - 如何防止 UIAlertViewController 的 UITextField 中出现特殊字符?