javascript - 将中间数学结果放入变量是否可以提高 javascript 的性能?
问题描述
我一直在玩黎曼 zeta 函数。我想在这里尽可能地优化执行时间,所以我把中间结果放在临时变量中。但是测试表明我没有从中获得性能提升。至少不明显。
function zeta(z, limit){
var zres = new Complex(0, 0);
for(var x = 1; x <= limit; x++){
var ii = z.imaginary * Math.log(1/x);
var pp = Math.pow(1/x, z.real);
zres.real += pp * Math.cos(ii);
zres.imaginary += pp * Math.sin(ii);
}
return zres;
}
我的问题是:即使我无法测量执行时间的差异,理论上什么更快?计算一次 ii 和 pp 并将它们作为变量传递,还是计算两次而不浪费时间声明?
解决方案
将事物单独放入(局部)变量通常不会对性能产生重大影响。如果有的话,它可能会增加寄存器分配器(或等效物)的压力并略微降低性能。
如果即时编译器(或运行时)不够聪明,无法进行等效优化(即只计算一次值并重新使用每次使用表达式的计算结果)。
这里真的没有普遍适用的规则。您需要在希望获得最佳性能的特定系统上进行基准测试和优化。
推荐阅读
- android - Android:如何重用或限制位图的数量
- javascript - 使用 moment.js 检查当前时间是否已经过了一个小时的间隔
- python - Python 读取 csv 编码问题 Linux
- django - Django 规则替换 Guardian.mixins.PermissionListMixin
- javascript - 如何在打字稿中编写一个类型,其中一个值的类型将取决于对象中另一个值的类型
- python-3.x - 使用 Robot Framework 在 oracle 中调用存储过程时参数的数量或类型不正确
- flutter - 在 Flutter 中使用 Dio 在 SpaceX API 中设置选项
- python - Python Transformers 错误:'dict 对象没有属性架构'
- javascript - Node.js 和 express.js 如何读取“get”端点?
- bash - bash 脚本中的 sed 命令更改 YAML 文件