|
呵呵,有点意思
1、32bit应用在64bit下本来就应该不会有什么提升,其实没显著下降就不错了。
2、64bit应用理论上可以比32bit更快,但是因为额外的8个寄存器会增加解码器的负荷以及代码的膨胀,都会在一定程度上抵消掉这个优势,这需要程序员的仔细调校优化以及处理器微架构的进一步优化。
3、之前的测试表明,Farcry 64bit的确比Farcry 32bit快,当然还有一些别的例子证明64bit的确可以更快,例如CFP2000。
本文的测试结果表明,大家从Vista 32升级为Vista 64并不会在性能上受到损失,但是在内存支持上的确可以获益不少,内存价格现在已经降低到上个8GB也丝毫不稀奇了。
其实Vista64 主要得益的应该是大内存寻址, 大文件操作(比如>4GB的文件操作,在32位上的__int64其实就是两个32为寄存器拼凑起来的,比起原生64为寄存器当然效果要差不少), 媒体音视频编/解码等等,这点版主大人也说了.
对于, 8个额外的寄存器会增加解码器的负荷以及代码的膨胀, 我觉得这个应该是相对于目前大多数的程序是32位的来说的吧? 我对于这个具体是如何膨胀和增加负荷不太明白,希望版主能给解释清楚一下?
说到程序员的仔细调校优化,有个简单的例子, 如果我们 while( *pDest++ = *pSource++) 来实现字符串拷贝Strcpy 的话,用的指针都是Char* 即每次都拷贝一个直接对于64位机器简直就是暴殄天物, 通过强制转换为64位指针的话, 可以理论上提高8倍的拷贝速度... 这个是程序员的优化,
还有就是编译器的优化, 有些聪明的编译器可能会自动对于代码进行各方面的优化,包括字节对齐, 嵌套循环优化, 跳转语句的优化等等, 但是我认为CPU的设计应该更加重要,
比如如何在流水线和高速缓存之间做取舍,使得CPU的分支预测命中率更高, 如何更合理的设计高速缓存的内部结构, 以及加强SIMD,SEE 等指令以便更好的支持浮点,矢量预算等等
计算机难在一个体系结构,呵呵, 微软未必全部了解 CPU设计,Intel未必精通编译器和操作系统,这个,或许才是最大的问题? |
|