0

我知道缓存将被多次使用的对象是个好主意。但是,如果我将多次使用以下内容怎么办:

var chacheWindow = window;
var chacheDocument = document;
var chacheNavigator = navigator;
var chacheScreen = screen;
var chacheWindowLocationHash = window.location.hash;
var chacheDocumentBody = document.body;

也许只有在 之间追逐东西才有好处<html></html>?请解释。

4

3 回答 3

6

缓存的目的是避免:

重复输入长名称

您的每个示例的名称都比原始名称长,因此您不会获得这种好处

避免重复进行昂贵的操作(或稍微昂贵的操作,例如array.lengthfor循环之前,非常多次)

也没有迹象表明您正在获得这种好处。

您可能根本不应该复制对局部变量的引用。

于 2012-05-03T18:20:48.593 回答
2

很难确切地说应该缓存什么。

我不会缓存本地全局对象或可能改变的东西。您在示例中所做的只是创建对同一对象的另一个引用。

应该缓存对 DOM 元素的引用,否则您将花时间再次搜索它们。执行繁重操作的函数的结果也可以被缓存。

您可以使用一些分析器并查看不同功能的性能,以提示您应该缓存什么。

于 2012-05-03T18:22:13.097 回答
1

缓存是一把双刃剑。如果您有一些需要密集计算的值或需要往返服务器的值,那么缓存是一个绝妙的主意。对于您在问题中指定的几乎所有值,您并没有给自己买任何东西。您只是将一个变量引用替换为另一个。

一般来说,让自己陷入这些微优化并不是一个好主意。优化和提高性能是好的,但你的时间通常最好花在寻找工作量太大的循环或修复错误的算法上,而不是处理这种情况,如果有任何改进,你只看一个最多只提高纳秒 - 但是对于您提到的值,您绝对不会看到任何改进。

于 2012-05-03T18:22:06.037 回答