GCC -fobjc-direct-dispatch 选项到底有什么作用?
海湾合作委员会手册说:
-fobjc-direct-dispatch
允许快速跳转到消息调度程序。在 达尔文这是通过通信页面完成的。
我可以假设这个标志消除了动态调度吗?它是如何运作的? 我相信如果直接链接它应该和 C 函数调用一样快。
The GCC manual says:
-fobjc-direct-dispatch
Allow fast jumps to the message dispatcher. On
Darwin this is accomplished via the comm page.
Can I assume this flag eliminates dynamic dispatch? How does it work?
I believe it should be as fast as a C function call if it is linked directly.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,动态调度仍然存在(调用仍然通过 objc_msgSend 路由)。此选项目前与 x86(-64) 没有任何区别。
来自 http:// /developer.apple.com/legacy/mac/library/documentation/DeveloperTools/gcc-3.3/gcc/Objective_002dC-Dialect-Options.html:
No, the dynamic dispatch is still there (calls still route through
objc_msgSend
). And this option doesn't introduce any difference currently with x86(-64).From http://developer.apple.com/legacy/mac/library/documentation/DeveloperTools/gcc-3.3/gcc/Objective_002dC-Dialect-Options.html: