当我连续执行两次简单的 JS 函数时,是否会消耗两倍的计算能力?

2024-01-15

一个简化的例子:

function shorten(string) {
  return string.slice(0, 3);
}

const today = "Friday";
if (shorten(today) === "Fri") {
  console.log("Oh yeah it's " + shorten(today));
}

shorten(today)这里被调用了两次,这让我感觉很糟糕。我相信我们每天都会遇到这种情况,而我们所做的就是存储shorten(today)首先在一个变量中,然后使用该变量两次。

我的问题是:现代 JS 引擎是否足够智能,以至于我实际上不需要担心它?


如果你跑shorten多次,V8发动机有一个即时编译器这将优化该代码段,以便下次运行得更快。

当它第二次遇到相同的函数调用时,也许它能够意识到它刚刚做了相同的计算,并且结果仍然存在于内存中

你所描述的被称为记忆化,而 V8 不会这样做。然而,那里有一些图书馆(例如fast-memoize https://npm.im/fast-memoize)确实如此。

但最好的选择仍然是将计算结果存储在变量中并引用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我连续执行两次简单的 JS 函数时,是否会消耗两倍的计算能力? 的相关文章

随机推荐