??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美va久久久噜噜噜久久,91久久婷婷国产综合精品青草,久久久精品久久久久久http://www.shnenglu.com/liruzhan/zh-cnWed, 07 May 2025 15:51:19 GMTWed, 07 May 2025 15:51:19 GMT60使用ZGPU的Geometry Clipmapsq行地Ş渲染(01)http://www.shnenglu.com/liruzhan/archive/2007/01/16/17693.html如展如展Tue, 16 Jan 2007 09:36:00 GMThttp://www.shnenglu.com/liruzhan/archive/2007/01/16/17693.htmlhttp://www.shnenglu.com/liruzhan/comments/17693.htmlhttp://www.shnenglu.com/liruzhan/archive/2007/01/16/17693.html#Feedback2http://www.shnenglu.com/liruzhan/comments/commentRss/17693.htmlhttp://www.shnenglu.com/liruzhan/services/trackbacks/17693.html阅读全文

如展 2007-01-16 17:36 发表评论
]]>
SSE Assembler vs Optimized C++http://www.shnenglu.com/liruzhan/archive/2007/01/05/SSE-vs-Optimized-Cxx.html如展如展Fri, 05 Jan 2007 03:35:00 GMThttp://www.shnenglu.com/liruzhan/archive/2007/01/05/SSE-vs-Optimized-Cxx.htmlhttp://www.shnenglu.com/liruzhan/comments/17300.htmlhttp://www.shnenglu.com/liruzhan/archive/2007/01/05/SSE-vs-Optimized-Cxx.html#Feedback6http://www.shnenglu.com/liruzhan/comments/commentRss/17300.htmlhttp://www.shnenglu.com/liruzhan/services/trackbacks/17300.htmlSSE Assembler vs Optimizied C++
打破汇编的神?


汇编语言对于软g工程人员来说Q是高速精的Uͼ但同时也是晦涩难懂的代名词。学校的老师Q各U各L书籍宝典QL丑և各种各样的例子来向我们灌输着q样一个定律:C++~译后生的代码在执行效率上不如汇编~译成机器代码。但是汇~代码在~写的时候晦涩难懂,使得开发效率大为降低。但是在那个CPU寄存器非常珍贵,内存异样E的时代Q汇~相对C有着独特的优势,可以极其_的ؓ每一个变量分配寄存器和内存,但是同时也得开发过E缓慢无比,因ؓ一不留就会造成寄存器分配冲H。同时由于那个时代的C++的编译器的编译效率不高,造成了编译的时候生的代码无论在算法和体积上都无法和汇~相比?br />
最q在~写引擎的时候,一直在汇编的执行效率和C++的编写效率上犹U不觉。一开始试着~写?个不同版本的Vectorc,叉积分别使用SSE汇编和C++优化。然后我试着~译了这两个不同的版本,~译的时候将所有优化选项全部打开Qƈ最大化速度优先。测试程序对于每个版本调?亿次叉积q算Qdq行?0ơ,最后的出的l果令h瞠目l舌。SSE汇编10ơ测试全部|于C++QC++所用的旉只相当于SSE的三分之一?br />
今天新编了一个四元数c,同样在从四元数向矩阵的{换中Q用了Intel|站上的Id Software的汇~代码,和C++代码。同栯行速度最大化优化Q?亿次转换试Q结果在预测之内Q差别虽然没有向量测试的那么惊hQ但C++仍然比汇~高效?br />
C代编译器都支持在~译时打开SSE增强指o集,q意味着Q包括Visual Studio在内的C++~译器,能够在从C/C++到汇~代码的q程中,自动可能的使用SSE增强指o集来提高汇编代码效率。手写SSE汇编Q由于h员之间的水^差异Q不可能汇~代码优化到最高水准,而编译器使用了高效的法来优化生的汇编代码Q这使得Q一个资质普通的E序员写出的SSE代码Q会比由C++~译器编译出的汇~代码要慢的多。当然这个世界上L有着惊h天赋的天才,一定能够在同等条g下写出比~译器快得多的汇~代码,但是q不h普遍性,在Y件业高速发展的今天Q通用性,易用性,Ҏ比,以及重用性才是Y件工E中最重要的,而花大钱雇一个汇~高手来写核心意味着q个代码h最差的UL性,最差的可读性,以及最差的重用性,q是不可取的?/p>

我们应该怿C~译器能够在最短时间内~译出最优代码,而事实上Q这个也已经成ؓ了既定的现实。抛弃手动的SSE汇编Q让~译器来完成q项工作Q是最明智的做法。当然我们应该在~写C++代码时稍微考虑一下数据流的生成顺序,以便让编译器发挥出最大效能,至于如何优化数据,在下一中介绍?/p>

ps: 在Visual Studio.NET 2003下,“启用增强指令集”设|ؓSSE/SSE2卛_?/p>

如展 2007-01-05 11:35 发表评论
]]>
þþþùɫAVѹۿ| þܳ| þ99ֻƵƷ8| 1000Ʒþþþþþþ| ˾þ91| þþƷֻоƷ66 | þþþƷsmվ| 99þþùƷ޿ | ۺϾþҹAV | þݺҹҹվ| þùƷ͵99| һɫþۺ޾Ʒ| ƷŮþþþAV| þˬˬav| ƷþþþþþþѼ| ƷŮþøվ| þþƷ99͵| þĻƷһ| þòӰ| Ʒxxxxˮ޹Ʒþһ | ŷһþþƷ| Avþ| ˾þô߽鶹| Ļ˾Ʒþò| ľþþþר| 99REþþƷﶼǾƷ | þþƷŷպƷ| Ʒþ»| ޹˾þһҳ| պŷۺϾþӰԺd3| þþþһƷɫav| Ʒþþþþù| þ91Ʒ91| þۺƵ| ŷƷ99þ| AŮAVۺϾþþ| ŷ޹׾þþþþþ| þþþþŹƷ| þɫ| Ѿþˬˬav| ҹþƷþþþ|