使用查找表进行优化:
Optimization using a lookup table:
这家伙:http://andrew-hoyer.com/experiments/cloth/制作了一个javascript算法来模拟布料。他指出代码太慢,所以他不得不使用泰勒级数来优化平方根。
-
难道不能通过预先计算每个可能的值并使用查找表来获得它来优化吗?
-
这个经常用吗?例如,在3d游戏中,他们真的执行计算吗?或者他们已经为每个sin、cos、tg、sqrt和类似函数都有一个查找表了?
-
为什么这没有预先编程到处理器中?
查找表几乎已经过时,并被现代处理器所掩盖。尤其是像sqrt这样的东西。大多数FPU可以在9-20个周期内完成它们,并且它们通常与其他计算交织。内存访问现在通常是CPU的瓶颈,缓存未命中需要数百个周期。即使是二级缓存也可能需要20-30个周期。通常情况下,进行计算比保存预先计算的值更快。
因为您的平均CPU默认情况下根据IEEE-754标准定义其浮动运算,该标准严格定义了任何数学运算的结果。根据设计,查找表只是一种近似值,只包含特定问题所需的特定范围和粒度,这使得在硬件中合理实现相当不可能。如果你想存储任何可能的值——自己计算。
这并不意味着我们从不近似结果——查找表并不是一个很好的解决方案。即SSE同时具有sqrtss
和rsqrtss
——后者返回实际结果的近似值,并且速度快得多。只是一点数学。
使用查找表可能没有错,但可能是微优化。使用一种算法或专注于其他代码更明智。也许是因为最后期限没有硬编码到cpu中。对数怎么样?cpu里有查找表吗?
相关文章:
- 正在全局范围中查找JavaScript函数
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- es6 相当于下划线查找位置
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 以可优化的方式使用requirejs加载模板
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何在不传递此信息的情况下查找被调用的元素
- Lodash 从值数组中查找数组中的值
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 使用RegExp查找url中的字符
- 查找元素高度,包括边距
- 使用JS查找数组的平均值
- Javascript 正则表达式:查找所有 URL 优化
- 优化循环,避免浪费查找
- 替换“;查找“;以便在IE8中进行优化
- 使用查找表进行优化:
- 使用Requirejs时,是否可以让优化器自动查找所有依赖项
- 优化异步查找算法
- Mongodb查找查询优化