首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数学规划优化

数学规划优化
EN

Stack Overflow用户
提问于 2011-10-05 08:57:52
回答 2查看 605关注 0票数 3

我想汇编一份关于数学编程优化的技巧和技巧清单,我经常在论坛上读到这样的内容:

使用距离平方值比较距离,因为平方根计算更expensive

  • (variable * 0.5)比(变量/ 2.0)

对于我来说,作为一名编程爱好者,我想尽我最大的努力在wath优化是关心的,任何贡献都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2011-10-05 09:03:50

两个关键点。

  • 度量--不要假设你知道什么是慢的和/或为什么。在实际的生产代码中测量它。然后只需要担心你大部分时间都在消耗的部分。
  • 优化了你的算法,而不是代码。寻找你正在做的事情,它是o(N^2)而不是o(N),或者是o(N)而不是o(ln(N)),然后切换到具有更好的渐近行为的算法。
票数 4
EN

Stack Overflow用户

发布于 2011-10-05 09:30:47

我要说的是,在考虑优化之前,首先要确定的是您的库的范围和预期目的。例如,这个库是2D还是3D,它是否包括几何算法,如凸壳?

像大多数开发这样的库的人一样,您会遇到一些不可避免的问题。有时候,像精确性错误这样的错误肯定会让你发疯。小心退化的三角形以及。

仔细考虑包含epsilon或容忍度的算法。这是一个很好的特性,但是它会使算法更加复杂。

如果你冒险在3D世界,对待点和向量的方式不同(这是3D数学中最常见的问题之一)。考虑一下模板乘法的元编程(这一个会燃烧,我感觉到了),因为它可以大大加快渲染速度。

一般来说,除了实质性的算法之外,尽量避免任何虚拟的调用,像向量或点这样的小类不应该被继承(另一个火热的机会)。

我想说的是,从坚持良好的开发实践开始,阅读Scott的“高效C++”和“更高效的C++”,如果您采用比较平方值这样的捷径来避免平方根计算,那么注释您的代码,以便未来的开发人员能够理解数学。

最后,不要试图在前面进行过度优化,为此使用分析器。就我个人而言,我通常从编写最优雅的解决方案开始(应该说我认为最优雅的解决方案),然后再进行优化,您会惊讶于C++优化器通常做得这么好。

希望这能有所帮助

马丁

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7658866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档