在Delphi 2009中sqrt仍然很慢吗?
旧技巧(查找表,近似函数)是否仍然有用?
答案 0 :(得分:5)
如果您正在处理一小组非常大的数字,那么查找表将总是更快。如果你正在处理大量的小数字,那么即使是慢速例程也可能比维持一个大表更快。
我查看了System.pas( SQRT 所在的位置),虽然有很多块标记为 Fastcode项目的许可, SQRT < / strong>不是。实际上,它只是对 FSQRT 进行汇编调用,因此它很可能没有改变。因此,如果它在某一点相对较慢,那么它很可能仍然很慢(尽管你的CPU可能会更快并且现在已经优化了......)
我的建议是查看您的使用情况并进行测试。
答案 1 :(得分:3)
很多以前我有一个应用程序计算距离来排序向量。我意识到un-sqrt-ed值的排序是一样的,所以我完全跳过了它。按距离^ 2排序并节省一些时间。
答案 2 :(得分:1)
我对效率问题的回答是先应用最简单的方法,然后再进行优化。当没有必要让它在第一时间快速运行时,使操作更快,这似乎很愚蠢。
然而,我离题了,因为我的答案是关于效率,而不是你问题的历史方面。