[英]Javascript, IE, Strings, and Performance problems
所以我們有這個產品,它在IE中真的很慢。 我們已經應用了IE人員自己建議的許多實踐( 像這樣 , 這個 ),並嘗試在DOM操作等關鍵部分中犧牲干凈的代碼來提高性能。
只是“弦樂隊”是最大的罪犯。 差不多750毫秒的獨家時間。
這是否意味着IE花費750毫秒只是實例化字符串? 我還在Opera開發博客上閱讀了這些內容:
構建腳本可以刪除空格,注釋,使用Array查找替換字符串(以避免MSIE為字符串的每個單個實例創建字符串對象 - 即使在條件中)
但沒有更多關於此的信息。 有人可以澄清嗎? 似乎IE必須在每次在代碼中都有“”時創建一個完整的String實例,這可以解釋這一點,但我不知道數組查找優化會是什么樣子。 順便說一句,我們在代碼中的任何地方都沒有做太多字符串連接。
我們使用的庫是MooTools 1.2.4
任何建議將不勝感激! 謝謝
更新 - 我對上面提到的關於“數組查找優化”的提示特別感興趣。 我們的庫很大(1MB)所以它有很多字符串,就像任何其他JS代碼一樣。 但由於我們的庫比大多數都大,這些字符串實際上導致了速度問題。
另外,是否有人知道在String.prototype中添加內容是否會使每個實例變慢?
我會抓住一個可以讓你更深入了解的分析器,你可以看到String到底有多長時間。 對於IE,特別是dynaTrace AJAX版 (是的,它是免費的)。
我會在那里打開你的相同頁面,它會給你一個樹分解,這樣你就可以看到發生了什么......以及一個熱點,看看究竟什么是低級函數花費的時間最長。
字符串在Javascript中是不可變的。 當你做這樣的事情時的含義:
alert("hello" + " world");
正在創建三個字符串:
找到這樣的實例並修復這些實例可能會有所幫助。 就像Nick說的那樣,使用分析器確切地確定Strings特定代碼導致的問題可能是最好的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.