加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 块和回调之间的性能差异是多少?

发布时间:2020-12-16 06:03:23 所属栏目:百科 来源:网络整理
导读:在雪豹中引入的阻止对象的东西之一就是以前使用回调处理的情况.语法对于传递上下文来说更为清晰.但是,我没有看到关于以这种方式使用块的性能影响的任何信息.我应该注意什么,如果有的话,性能陷阱应该使用块,特别是作为替代C风格的回调? 解决方法 块运行时看
在雪豹中引入的阻止对象的东西之一就是以前使用回调处理的情况.语法对于传递上下文来说更为清晰.但是,我没有看到关于以这种方式使用块的性能影响的任何信息.我应该注意什么,如果有的话,性能陷阱应该使用块,特别是作为替代C风格的回调?

解决方法

块运行时看起来很紧.块描述符和函数是静态分配的,所以可以放大你的程序的工作集,但是你只能在存储中为你从包围范围引用的变量“支付”.非全局块文字和__block变量构建在堆栈中,无任何分支,因此您不太可能遇到这么多的减速.调用块只是result =(* b-> __ FuncPtr)(b,arg1,arg2);这与result =(* callback_func_ptr)(callback_ctx,arg2)相当.

如果您将块视为“编写自己的上下文结构的回调,并为您处理丑陋的包装,内存管理,转换和取消引用”,我认为您将意识到,在运行时,块是一个很小的成本,编程时间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读