海湾合作委员会手册说:
-fobjc-direct-dispatch
允许快速跳转到消息调度程序。在
达尔文这是通过通讯页面完成的。
我可以假设这个标志消除了动态调度吗?它是如何工作的?
我相信如果直接链接它应该和 C 函数调用一样快。
不,动态调度仍然存在(呼叫仍然通过objc_msgSend
)。此选项目前与 x86(-64) 没有任何区别。
From http://developer.apple.com/legacy/mac/library/documentation/DeveloperTools/gcc-3.3/gcc/Objective_002dC-Dialect-Options.html:
对于某些功能(例如objc_msgSend
)被 Objective-C 程序频繁调用,高内存中存在可以直接跳转的特殊入口点(例如,通过“bla
“PowerPC 上的指令)以提高性能。fobjc-direct-dispatch
选项将导致生成此类跳转。该选项仅与 NeXT 运行时结合使用;此外,用-fobjc-direct-dispatch
选项仅在 Mac OS X 10.4 (Tiger) 或更高版本的系统上运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)