是否缓存了多次运行函数的结果?

时间:2012-10-30 19:54:10

标签: javascript performance caching

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

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

4 个答案:

答案 0 :(得分:1)

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

干杯

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

也许。

这里有很多级别的缓存可供查看。您的处理器本身只有一个缓存。但基本上,你根本不能说那些。它们可能有不同的大小,比如你在平均时间做的其他事情以及功能对它的影响有多长。还应该注意的是,这在Javascript中调用函数调用的级别上不起作用,但是级别要低得多。但是,它有时可能意味着某些时间可以削减函数的执行时间。我认为这不太可能或不太明显,但最后,你真的不能说太多。

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

最后,基本答案是:不是没有明显的方式。但是,由于缓存可能实际上存在速度增加,因此总是很难说。

答案 3 :(得分:0)

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