這可能有點含糊。技術或數據結構加快Javascript?
我正在使用javascript(http://jsatari.com/demo/和https://github.com/docmarionum1/jsAtari)的Atari 2600模擬器,它運行得非常慢。在15-20 FPS左右的鉻合金和2-3 FPS左右的火狐(在我的電腦上)。
我已經通過我的代碼優化了Chrome和Firebug的性能分析器,並優化了我所能做的任何事情,但是我從我需要的內容中選擇了FAR,並且在算法中看不到更多改進空間。 (或者說,至少在沒有從原來的硬件實現顯著分歧。)
到目前爲止我最大的改進不是來自提高的算法,而是從改變我的數據結構:
切換我的大型數組(數千個元素)到Typed Arrays提供了最大的性能提升。在交換機之前,Firefox會凍結,Chrome運行速度提高了10倍。
我用個別變量和開關語句取代了一些較小的數組,同時提供了顯着的性能提升。
所以,看起來非常清楚,數組非常緩慢。
一般來說,性能只是看起來非常挑剔,我的代碼中的小改變導致性能發生了很大的變化(無論好壞)。還是其他可能會影響性能的奇怪因素?
例如,用對象文字符號創建的對象是否由引擎表示不同?即使沒有使用變量,我也看到只是增加或刪除一個對象的變量時,性能發生了明顯的變化。變數的數量是否會影響?
JavaScript中是否還有其他新的開發(如類型化數組)可能會對性能產生重大影響?
最後,有沒有什麼好的方法來跟蹤由於像這些無形資產的表現?分析器似乎沒有幫助,因爲整個腳本有變化,而不僅僅是某些部分。
你最終是否優化了這個,如果是的話,你可以發佈什麼爲你工作? – alex
部分鏈接:http://www.websiteoptimization.com/speed/10/
http://www.nczonline.net/blog/2009/01/13/speed-up-your-javascript-part-1/
另一點:
如果你的javascript只能在當前的瀏覽器上運行 - 有所謂的web工作者提供javascript中的多線程......見
http://blogs.msdn.com/b/davrous/archive/2011/07/15 /介紹到的,HTML5的Web工作者最JavaScript的多線程的方法。aspx
http://www.devarticles.com/c/a/HTML/HTML-5-and-Javascript-Web-Workers/
http://ejohn.org/blog/web-workers/
– Yahia