BiA*_*AiB 16 javascript performance internet-explorer
我在修改IE8 for XP中的位置哈希时遇到了麻烦.简单地说:
self.location.hash = "whatever"
Run Code Online (Sandbox Code Playgroud)
需要大约800ms~1800ms
我不知道什么可以减慢它.我在其他一些网站上检查过相同的指令,但速度并不慢.
什么线索可以让它如此缓慢?对不起,我不能给出一个在线示例.
编辑:这是我在IE控制台中得到的,输入:
console.log( new Date().getTime() );
self.location.hash = "sfdsd";
console.log( new Date().getTime() );
Run Code Online (Sandbox Code Playgroud)
输出:
JOURNAL : 1326468325447
JOURNAL : 1326468327390
undefined
Run Code Online (Sandbox Code Playgroud)
对于单个分配,如果我读得正确,那将近2000毫秒:/.
EDIT2:因为它看起来不够清晰,更多的预编码代码:
var profileThat = function() {self.location.hash = "whatever"};
$('#keywatchHeader').click( profileThat );
Run Code Online (Sandbox Code Playgroud)
两次点击的分析结果:
Run Code Online (Sandbox Code Playgroud)profileThat 2 3475,00 3475,00 hidden 4 50,07 50,07 http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js 6 608 eventHandle 8 3525,07 40,06 http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js 2 595 get 4 20,03 20,03 http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js 6 419 get 6 10,01 10,01 http://192.168.0.30/kw5/js/yui2/dom/dom.js 96
EDIT3:
出于好奇,我在树上对节点号进行了一些测试,结果令人惊讶.经过这样的电话:
document.getElementsByTagName('*').length; //3621
$('#keywatchPanels').children().remove();
document.getElementsByTagName('*').length; //332
Run Code Online (Sandbox Code Playgroud)
之后,探测器给出600ms而不是每次通话1700ms!但我几乎没有节点号会影响标签写作.
(edit4):我发现了这个相关的问题:为什么这段Javascript代码这么慢?(但这里的答案只是"删除它")
BiA*_*AiB 16
最后,我在回答相关问题的评论中找到了答案: 为什么这段Javascript代码如此之慢?
呃,刚在博客上发现有同样问题的人.显然,如果您正在运行IE Developer Toolbar,那么速度会很慢.现在我怎么样了?-_-"
- Aistina 09年5月7日9:22
为什么我不早点呢?