是否可以在瀏覽器中並行運行JavaScript代碼?我願意犧牲一些瀏覽器支持(IE,Opera,其他)來獲得一些優勢。並行JavaScript代碼
回答
如果你沒有操作DOM,你可以使用webworkers ......還有一些其他的限制,但檢查出來@http://ejohn.org/blog/web-workers/
嗯。雖然我與「canvas」元素進行交互,但看起來很完美。可能不會這樣做,我正確嗎? – 2010-10-09 19:59:59
我相信更新canvas節點與DOM交互相同。但它從未受傷測試。 – 2010-10-09 20:01:16
您可以使用您的網絡工作人員發送控制消息,然後解釋這些控制消息以更改DOM,但沒有直接訪問權限。 – JKirchartz 2010-10-09 20:16:34
也許會更好地重新編寫你的JavaScript的東西,一般運行得更快,而不是試圖通過並行來加速Javascript。 (我希望你會發現分叉並行JavaScript活動的成本也很高,並且可能會消除任何可能的並行增益;這是並行編程的常見問題)。
Javascript在大多數瀏覽器中被解釋爲IIRC,它在它的頂部是動態的,這意味着它運行緩慢。
我在印象之下可以編寫Java代碼並在瀏覽器插件下運行它。 Java是類型安全的,JIT編譯爲機器代碼。我期望用Javascript完成的大型計算在Java中運行速度會快很多。我並不特別提示Java;任何你可以插入的編譯語言都可以。
作爲替代方案,Google提供了Closure, a JavaScript compiler。這是聲稱是一個編譯器,但看起來像一個優化器給我,我不知道太多它「優化」。但是,也許你可以使用它。我希望Closure編譯器能夠嵌入到Chrome中(但我不知道這個事實),也許只是運行Chrome會讓你的JavaScript編譯器「免費」。
編輯:在閱讀關於什麼關閉做,作爲編譯器傢伙我沒有太多印象。它看起來很重要的一點就是減少代碼的大小,這樣可以最大限度地縮短下載時間,但不一定會提高性能他們在函數內聯中做的一件好事。我懷疑這將有助於切換到真正的編譯語言。編輯2:在Chrome中運行JavaScript時,「Closure」編譯器與引擎不同的是,其編譯器與引擎不同。我被告知,但不知道這個事實,Chrome引擎有一個真正的編譯器。
它將JavaScript編譯爲JavaScript,並一路優化(內聯函數等)。請參閱[常見問題](http://code.google.com/closure/compiler/faq.html#how-different)。我擔心你對JavaScript的性能與Java的比較做出了巨大的假設 - 例如,WebKit的JavaScript引擎使用JIT編譯器 - 以及Java是否適合OP的用例。 – s4y 2010-10-15 18:53:50
Java不會*在瀏覽器中運行得更快,然後運行JavaScript。編寫代碼(對於Web應用程序)不僅速度慢而且笨拙,而且會嚴重限制與DOM的交互,除非整個頁面是小程序。任何大型計算*都可以在Java中完成,但是我沒有任何大的計算。我想平行對[我正在研究的寵物項目](http://joshuakehn.com/blog/static/sort.html)上的操作,其目標是不需要瀏覽器插件或其他外部庫。 – 2010-10-15 19:08:55
@Sidnicious:是的,我發現它是JavaScript - > JavaScript,我爲什麼稱它爲「優化器」。我確實建議存在真正的編譯器(可能在Chrome下);很高興聽到有另一個來自WebKit。話雖如此,Java的數據模型和訪問恕我直言比真正的機器更接近於JavaScript,如果Java/JIT與Sun/IBM團隊編譯的實際相同的計算比Webkit或任何其他「編譯」JavaScript運行速度慢,我會非常驚訝。 OP沒有具體說明他在做什麼,只是速度很慢,並且假設它是計算的默認值。 – 2010-10-15 20:14:30
英特爾想出一個開源項目代號爲River Trail
退房http://www.theregister.co.uk/2011/09/17/intel_parallel_javascript/
Parallel.js有在Javascript多線程處理一個很好的API。它可以在網頁瀏覽器和節點中運行。
- 1. 更換Javascript代碼並運行它
- 2. 運行Javascript代碼
- 3. 源代碼中的JavaScript代碼並不反映實際執行的代碼
- 4. 並行Erlang代碼
- 5. OpenMP代碼並行
- 6. html - javascript代碼合併
- 7. javascript - 在代碼中執行代碼?
- 8. Javascript的form.submit()失敗,並停止執行其餘的JavaScript代碼
- 9. 的JavaScript - 運行代碼
- 10. Javascript代碼運行序列
- 11. php運行javascript代碼
- 12. XHTML JavaScript代碼一行
- 13. JavaScript執行.cs代碼?
- 14. Javascript代碼執行延遲
- 15. JavaScript代碼沒有運行
- 16. javascript執行php代碼
- 17. PhantomJS不運行JavaScript代碼
- 18. Javascript代碼不能執行?
- 19. javascript代碼不能執行!
- 20. Javascript執行代碼順序
- 21. Javascript代碼行爲意外
- 22. Javascript正在運行代碼
- 23. Javascript代碼不會執行
- 24. 運行代碼的JavaScript
- 25. 並行化matlab代碼
- 26. 模擬並行代碼
- 27. 並行代碼拋出OutOfRangeException
- 28. Windows Azure:並行的代碼
- 29. 並行處理python代碼
- 30. SDK進行編碼,並從C++代碼
呃,如果你願意犧牲兼容性,爲什麼你不能在你的程序中執行比JavaScript更快並且運行的程序呢? – 2010-10-15 16:51:35
@Ira:你有什麼想法? – 2010-10-15 17:38:59
我開始迴應您的評論,並決定將其作爲答案。 – 2010-10-15 18:00:05