32位 VS 64位
- ptptptptptpt
- 帖子: 3711
- 注册时间: 2006-09-19 18:16
目前只有一个原因促使我用64位:电源管理
我的机子是 神舟唐朝 H300S ( http://cnc.hasee.com/cn/Product_Index.h ... &iszx=null) ,用 i386 必须加上 acpi=off noapic nolapic 才能启动,而且无法休眠,关机到最后必须手动按电源按钮,用 amd64 没有上述问题
至于性能,没有明显感觉
似乎内存吃的比较厉害
我的机子是 神舟唐朝 H300S ( http://cnc.hasee.com/cn/Product_Index.h ... &iszx=null) ,用 i386 必须加上 acpi=off noapic nolapic 才能启动,而且无法休眠,关机到最后必须手动按电源按钮,用 amd64 没有上述问题
至于性能,没有明显感觉
似乎内存吃的比较厉害
- luojie-dune
- 帖子: 22033
- 注册时间: 2007-07-30 18:28
- 系统: Linux
- 来自: 空气中
-
- 帖子: 47
- 注册时间: 2006-07-30 17:56
几个问题的解释:
1、64位程序的确会占用更多内存。这有几个因素
a) 64位指令需要一个前缀,这需要每条指令占用一个字节
b) 64位指令的地址和立即数是64位的,这需要比32位多占用4个字节。
c) 64位编译器能生成使用更多寄存器的指令,以避免使用堆栈。相比使用堆栈,这会使程序占用更多空间。
d) 64位数据类型比32位要占用更多空间。而由于字节对齐的原因,甚至在64位程序中使用32位数据类型也要占用相同数量的空间
2、64位程序能够运行得比32位快。原因是:
a) 原生数据类型能更容易转化为多媒体专用指令所需的类型。因为多媒体指令一般都能处理64甚至128位的数据。
b) 使用寄存器而不是堆栈能避免许多内存访问,从而加快速度。
我本人从Ubuntu 6.04开始,一直在使用64位操作系统,期间用过Windows XP x64,Windows Server 2003 x64,Windows Vista x64,以及Ubuntu 7.04, Ubuntu 7.10和现在正在使用的Ubuntu 8.04等操作系统。整体而言,全面转向64bit是我从Windows彻底转向Ubuntu的主要原因。这是因为Windows的64bit实在不怎么样,驱动的支持连Ubuntu都比不上。时至今日,我因为板载SATA不敷使用且想要用e-SATA连接外置硬盘盒,买了一个SATA的PCI卡,结果Vista 64bit的驱动都没有找到,而Ubuntu则即插即用。
最让人心寒的是Vista 64bit的驱动程序需要数字签名,你没有驱动想自己写一个吗?不行!你还得花钱去买数字证书!我是彻底的放弃Windows了。
1、64位程序的确会占用更多内存。这有几个因素
a) 64位指令需要一个前缀,这需要每条指令占用一个字节
b) 64位指令的地址和立即数是64位的,这需要比32位多占用4个字节。
c) 64位编译器能生成使用更多寄存器的指令,以避免使用堆栈。相比使用堆栈,这会使程序占用更多空间。
d) 64位数据类型比32位要占用更多空间。而由于字节对齐的原因,甚至在64位程序中使用32位数据类型也要占用相同数量的空间
2、64位程序能够运行得比32位快。原因是:
a) 原生数据类型能更容易转化为多媒体专用指令所需的类型。因为多媒体指令一般都能处理64甚至128位的数据。
b) 使用寄存器而不是堆栈能避免许多内存访问,从而加快速度。
我本人从Ubuntu 6.04开始,一直在使用64位操作系统,期间用过Windows XP x64,Windows Server 2003 x64,Windows Vista x64,以及Ubuntu 7.04, Ubuntu 7.10和现在正在使用的Ubuntu 8.04等操作系统。整体而言,全面转向64bit是我从Windows彻底转向Ubuntu的主要原因。这是因为Windows的64bit实在不怎么样,驱动的支持连Ubuntu都比不上。时至今日,我因为板载SATA不敷使用且想要用e-SATA连接外置硬盘盒,买了一个SATA的PCI卡,结果Vista 64bit的驱动都没有找到,而Ubuntu则即插即用。
最让人心寒的是Vista 64bit的驱动程序需要数字签名,你没有驱动想自己写一个吗?不行!你还得花钱去买数字证书!我是彻底的放弃Windows了。