会造成性能下滑。而且在64位系统里给一个64位整数赋值是原子操作,但是在32位系统里就不是了。 通用寄存器是64位的,原来的32、16位寄存器仍然可以访问,原来的32位、16位内存操作也可以用。不会自动把你的数据扩展到64位。
没你想的那么简单。常规的x86 CPU指令,32位和64位,比如add指令,64位只不过是一次可以处理一个64位立即数或64位寄存器或64位内存变量,并不是一次可以处理两个32位加法。而且占用的CPU指令周期还是一样的。而且C/C++编译器也不会那么智能,你写a=1+2,运行时间时一样的。 如果想要一次性处理多个数据,请使用MMX、SSE/SSE2等SIMD(单指令多数据)指令集。这个时候64位的优点就能体现出来了。所以除非你专门进行了汇编级别的算法优化,性能不会提升的。目前64位系统更多的意义是使用大于4GB的内存空间。
[quote=引用 6 楼 whoho 的回复:] 64位系统不只是意味着寻址范围的增加…… 整套指令系统都拓展了,总线也有变化 至少可以从数据并行优化的角度去作很多工作 另:据说Windows64位版本对32位程序的兼容性很好,比以前16位到32位的情况要好得多,不需要一个专门的虚拟机
[quote=引用 3 楼 movsd 的回复:] 64位主要就是为了使单个进程使用超4G的内存,另外对性能的提升,除非在你的算法中使用的int64这样的64位变量,否则和32位性能一样。
64位主要就是为了使单个进程使用超4G的内存,另外对性能的提升,除非在你的算法中使用的int64这样的64位变量,否则和32位性能一样。
64位系统不只是意味着寻址范围的增加…… 整套指令系统都拓展了,总线也有变化 至少可以从数据并行优化的角度去作很多工作 另:据说Windows64位版本对32位程序的兼容性很好,比以前16位到32位的情况要好得多,不需要一个专门的虚拟机
我好像也有类似的问题,为什么我的64位机,使用64位的VS2013,在创建工程时,还是win32控制程序?这个win32是什么意思啊??
3,881
社区成员
9,054
社区内容
加载中
试试用AI创作助手写篇文章吧