我想汇编一份关于数学编程优化的技巧和技巧清单,我经常在论坛上读到这样的内容:
使用距离平方值比较距离,因为平方根计算更expensive
快
对于我来说,作为一名编程爱好者,我想尽我最大的努力在wath优化是关心的,任何贡献都将不胜感激。
发布于 2011-10-05 09:03:50
两个关键点。
发布于 2011-10-05 09:30:47
我要说的是,在考虑优化之前,首先要确定的是您的库的范围和预期目的。例如,这个库是2D还是3D,它是否包括几何算法,如凸壳?
像大多数开发这样的库的人一样,您会遇到一些不可避免的问题。有时候,像精确性错误这样的错误肯定会让你发疯。小心退化的三角形以及。
仔细考虑包含epsilon或容忍度的算法。这是一个很好的特性,但是它会使算法更加复杂。
如果你冒险在3D世界,对待点和向量的方式不同(这是3D数学中最常见的问题之一)。考虑一下模板乘法的元编程(这一个会燃烧,我感觉到了),因为它可以大大加快渲染速度。
一般来说,除了实质性的算法之外,尽量避免任何虚拟的调用,像向量或点这样的小类不应该被继承(另一个火热的机会)。
我想说的是,从坚持良好的开发实践开始,阅读Scott的“高效C++”和“更高效的C++”,如果您采用比较平方值这样的捷径来避免平方根计算,那么注释您的代码,以便未来的开发人员能够理解数学。
最后,不要试图在前面进行过度优化,为此使用分析器。就我个人而言,我通常从编写最优雅的解决方案开始(应该说我认为最优雅的解决方案),然后再进行优化,您会惊讶于C++优化器通常做得这么好。
希望这能有所帮助
马丁
https://stackoverflow.com/questions/7658866
复制相似问题