簡體   English   中英

Javascript,IE,字符串和性能問題

[英]Javascript, IE, Strings, and Performance problems

所以我們有這個產品,它在IE中真的很慢。 我們已經應用了IE人員自己建議的許多實踐( 像這樣這個 ),並嘗試在DOM操作等關鍵部分中犧牲干凈的代碼來提高性能。

但是,正如你在IE瀏覽器截圖中看到的.. 替代文字

只是“弦樂隊”是最大的罪犯。 差不多750毫秒的獨家時間。

這是否意味着IE花費750毫秒只是實例化字符串? 我還在Opera開發博客上閱讀了這些內容:

構建腳本可以刪除空格,注釋,使用Array查找替換字符串(以避免MSIE為字符串的每個單個實例創建字符串對象 - 即使在條件中)

但沒有更多關於此的信息。 有人可以澄清嗎? 似乎IE必須在每次在代碼中都有“”時創建一個完整的String實例,這可以解釋這一點,但我不知道數組查找優化會是什么樣子。 順便說一句,我們在代碼中的任何地方都沒有做太多字符串連接。

我們使用的庫是MooTools 1.2.4

任何建議將不勝感激! 謝謝

更新 - 我對上面提到的關於“數組查找優化”的提示特別感興趣。 我們的庫很大(1MB)所以它有很多字符串,就像任何其他JS代碼一樣。 但由於我們的庫比大多數都大,這些字符串實際上導致了速度問題。

另外,是否有人知道在String.prototype中添加內容是否會使每個實例變慢?

我會抓住一個可以讓你更深入了解的分析器,你可以看到String到底有多長時間。 對於IE,特別是dynaTrace AJAX版 (是的,它是免費的)。

我會在那里打開你的相同頁面,它會給你一個樹分解,這樣你就可以看到發生了什么......以及一個熱點,看看究竟什么是低級函數花費的時間最長。

字符串在Javascript中是不可變的。 當你做這樣的事情時的含義:

alert("hello" + " world");

正在創建三個字符串:

  1. 你好
  2. 你好,世界

找到這樣的實例並修復這些實例可能會有所幫助。 就像Nick說的那樣,使用分析器確切地確定Strings特定代碼導致的問題可能是最好的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM