在Xcode中编译i386与x86_64之间的区别?

sam*_*sam 7 xcode 32bit-64bit

在Xcode中编译Mac应用程序与设置为i386 vs x86_64的Active Architecture(在主窗口左上角的下拉列表中选择)之间有什么区别?在项目的构建设置中,架构选项是标准(32/64位通用),32位通用和64位Intel.实际上,这些意味着什么以及如何决定?

假设一个目标是OS X 10.5及更高版本.我在Activity Monitor中看到,编译x86_64会导致应用程序使用的内存多于为i386编译的内存.有什么好处?我知道64位是"未来",但考虑到更高的内存使用率,选择32位是否有意义?

bbu*_*bum 8

32/64位通用 - i386,x86_64,ppc

32位通用 - i386,ppc

64位英特尔 - 仅限64位英特尔

不再支持ppc64.


由于多种原因,x86_64二进制文件速度更快; 更快的ABI,更多的寄存器,在许多(大多数和所有新机器)机器上内核是64位和内核调用更快,等等...

虽然64位的内存开销与内存开销直接相关,但通常情况下,指针应用程序的数据结构的指针如何,请记住,32位应用程序会拖动所有框架的32位版本.如果你的系统是系统上唯一的32位应用程序,那么与64位版本相比,它将产生大量的开销.

64位应用程序也享受最新和最好的Objective-C ABI; 合成的ivars,非脆弱的ivars,统一的C++/ObjC异常,零成本@try块等......并且有许多优化只能在64位中实现.