0

在 JavaScript 中,我有一个带有数组的对象,以及一个获取该数组的切片并与另一个数组连接的方法。

如果该方法在同一个函数中运行多次以始终返回相同的值,那么第一次运行后性能是否会更快(由于结果将缓存在 CPU 缓存中)?

4

4 回答 4

1

我想这个问题的一般答案是否定的!JavaScript 中没有缓存,也没有您可以使用 JavaScript 控制的 CPU 缓存。如果您需要缓存某些内容/提高性能,我将不得不自己编程。

看这个小例子:http: //jsperf.com/cachingjq

于 2012-10-30T20:00:56.770 回答
1

当然,没有是唯一的答案。因为函数的目的是取一些参数并返回一个值。每次调用函数时,所有参数都可能不同,即使它们相同,结果也可能不同,如果调用函数并且每次返回相同结果时也会发生事件,因为它可能会执行操作或导致在其他地方进行一些修改,由解析器缓存结果将是一个错误的想法。

干杯

于 2012-10-30T19:58:28.970 回答
1

也许。

这里有很多级别的缓存可供查看。仅您的处理器就有多个缓存。但是,基本上,您根本无法对这些说太多。它们可能具有不同的大小,例如您在此期间所做的其他事情以及功能的持续时间都会影响这一点。还应该注意的是,这在 Javascript 中称为函数调用的级别上不起作用,而是在低得多的级别上起作用。但是,有时这可能意味着可以从函数的执行时间中节省一些时间。我认为这不太可能或太引人注目,但最后,你真的不能说太多。

最后,还有 javascript 本身。根据标准,它没有这样的缓存。但是,该标准也不禁止奇怪的缓存,所以有一天可能会有一个浏览器这样做(我不相信现在有一个。)

最后,基本答案是:不,不是很明显。但是,由于缓存实际上可能会提高速度,这总是很难说的。

于 2012-10-30T20:03:33.210 回答
0

不,您必须手动(或使用框架)记忆结果:Javascript Memoization Explanation?

于 2012-10-30T19:58:36.130 回答