运算速度
回答
这种微型优化只是浪费你的时间以获得最小收益。
使用一个分析器,并开始通过改进自己的算法和代码,无论探查器告诉你游戏花费大部分时间。
请注意,在某些情况下,为了实现更高效的设计,您可能必须检修整个软件或其中的大部分软件。在这种情况下,剖析器的结果可能会误导缺乏经验的人。例如。与一劳永逸地缓存其结果相比,优化复杂计算可能获得最小的收益。请参阅this somewhat related thread。
最好的办法是使用像AQTime这样的工具并进行性能分析。然后你会知道在哪里花时间优化。但是过早地做或者基于猜测工作可能不会让你感觉太多,并且使代码复杂化或者破坏某些东西。如果可以的话,最好的办法是进行任何浮点计算,特别是sin,cos等,以及sqrt。
我曾经有过这样的事情:
for i = 0 to nc
for j = 0 to nc
aij = sqrt(a[i]*b[j])
,其计算NC数控*平方根。但是由于sqrt(a * b)等于sqrt(a)* sqrt(b),所以您可以事先预先计算所有a和b的平方根,以便循环变成如下所示。所以不是nc * nc平方根,而是2 * nc平方根。
for i = 0 to nc
for j = 0 to nc
aij = asqrt[i]*bsqrt[j]
您问的问题高度依赖于您在硬件级开发的平台。不仅在不同的芯片组之间会有差异(英特尔/ AMD),而且平台上也会有不同的变化(我怀疑iPhone没有尽可能多的指令去做某些事情)。
您在您的问题中声明您正在讨论“呈现代码”。如果您正在讨论实际在GPU(着色器代码)上运行的代码而不是CPU,则规则会发生大规模变化。
由于@thkala说,我真的不会在你开始之前担心这一点。我发现它不仅更容易,而且可以更快地以首先使用的方式进行编码,然后(只有在需要改进时)重新编写代码分析时缓慢的位。更好的算法通常会提供比尝试仅使用特定功能更好的性能。
在我们正在为iPhone开发的游戏中,我唯一想到的就是大数学运算(sqrt)很慢(不是基本的数学运算),而且运行的循环每一帧都会很快吃光CPU。牢记这一点,我们不需要优化任何代码 - 因为它无论如何都以60fps运行 - 所以我很高兴我一开始并不担心它。
确定特定操作的速度通常称为分析。对操作进行分析的最佳解决方案是使用分析器。 Visual Studio有一个很好的分析器。 Linux有gprof。如果你的编译器没有分析器,那么购买一个编译器可能是值得的,如果你经常分析你的代码的话。
如果不使用专业的探查度日,那么你通常可以通过嵌入自己到你的程序
check this out一些分析器的代码获得。
- 1. 浮点运算速度
- 2. Python“in”运算符速度
- 3. 函数的运算速度
- 4. AVX标量运算速度更快
- 5. 从速度计算加速度峰值
- 6. 速度计算算法
- 7. 在Linux和Windows上的算术运算执行速度
- 8. OpenGL平滑相机运动,运算速度比渲染慢
- 9. 从UIA加速计计算速度
- 10. 指数计算速度
- 11. 计算角加速度c#
- 12. 黑莓加速度计算
- 13. 基本速度算法?
- 14. parfor减慢计算速度
- 15. 计算出速度datastudio
- 16. 计算速度字符串
- 17. 计算上传速度
- 18. 计算径向速度
- 19. .includes()算法和速度?
- 20. 计算CAN总线速度
- 21. 从2点计算速度
- 22. 冲刺速度计算
- 23. CUDA快速数学运算
- 24. Android加速度计角度计算
- 25. 使用`**`作为运算符运算符快速运行,运算符'-`
- 26. 加速度运动极限
- 27. JMeter运行速度很慢
- 28. TortoiseSVN运行速度很慢
- 29. AS3:车辆运动速度
- 30. CURAND运行速度较慢
找到处理器参考并查看延迟/吞吐量:例如http://download.intel.com/design/processor/manuals/248966.pdf – Anycorn 2011-02-01 19:03:19