2012-01-13 7 views
16

IE8 for XPで位置ハッシュを変更することに問題があります。単に呼び出す:window.location.hash IE8で痛いほど遅い割り当て

self.location.hash = "whatever" 

約800ms〜1800ms

私はこれを遅らせることができるか見当がつかないかかります。私は他のいくつかのサイトで同じ指示をチェックしましたが、それほど遅くはありません。

何がそんなに遅くなるのか?申し訳ありませんが、私はオンラインの例を与えることはできません。


EDIT:

console.log(new Date().getTime()); 
self.location.hash = "sfdsd"; 
console.log(new Date().getTime()); 

出力:

JOURNAL : 1326468325447 
JOURNAL : 1326468327390 
undefined 

私が正しく読めば、ほとんど2000ミリ秒になり、単一のためにここで が入力されると、私はIEコンソールで何を得るのです割り当て:/。


EDIT2:

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:2回のクリックで

var profileThat = function() {self.location.hash = "whatever"}; 
$('#keywatchHeader').click(profileThat); 

プロファイラ結果:それは十分に明確で、より多くのpreofiledコードはいないようですので、 :

私は好奇心のためツリー上のノード番号についていくつかのテストを行い、結果は驚くべきことです。そのような呼び出しの後:その後

document.getElementsByTagName('*').length; //3621 
$('#keywatchPanels').children().remove(); 
document.getElementsByTagName('*').length; //332 

プロファイラは、600msのの代わりに、通話ごと1700ms与えます!しかし、ほとんどの場合、ノード番号はハッシュタグの書き込みに影響します。


(edit4)

:私はこの関連の質問見つけた:(しかし、ここでは答えは単に「それを削除」された)Why is this piece of Javascript code so slow?

最後に
+0

あなたのページはどのくらいの大きさですか?ハッシュをチェックしている他のコード? – epascarello

+0

大規模なものはどういう意味ですか?ピクセル幅、重量、要素?ハッシュをチェックしているYUI2履歴マネージャーがありますが、それはコードでそれを実行するかコンソールで実行するかにかかわらず、その多くの時間を吸うのはこの命令だけです。 – BiAiB

+0

私はそれを再現できません。 IE8.0.6001.18702で約100msかかるどのようにパフォーマンスを測定しましたか? [IEスクリプトプロファイラ](http://msdn.microsoft.com/en-us/library/dd565629%28v=vs.85%29.aspx#_start)を使用しましたか? – user123444555621

答えて

16

、私は答えのコメントで私の答えを見つけました関連する質問: Why is this piece of Javascript code so slow?

私は同じ問題のブログに誰かを見つけました。明らかに IE Developer Toolbarを実行している場合は遅いです。今 私はプロフィールに行くつもりはどうですか? -_-」

- Aistina 5月7日'09 9時22

で私は以前それについていえなかったのはなぜ?

+0

あなたはlocation.hashを変更する前に時間を記録し、変更後の時間を記録して(上記の質問のように)相違を警告することによって、プロファイルすることができます。私にとっての時差は、私がかなり高いと考える400msから600msの間のどこかにあります。あなたはまだ低速への解決策を見つけましたか? –

+0

デバッガを閉じる以外の答えはありません。私が質問に記載したように(EDIT 3参照)、ページチャージを減らす(すべての要素を削除することによって)、応答時間が短縮されました。しかし、この時点では、これは科学よりも宗教です。 – BiAiB

関連する問題