我對這項技術的理解是,它被編譯成彙編。在速度上,它比Java慢,但比Ruby和Python快。在客戶端,解釋器是有道理的,但在服務器端我的第一個想法是在運行之前編譯或者至少可以選擇這樣做是最佳的體系結構。如果JavaScript以這種方式預先編譯,它會比Java運行得更快嗎?或者它與弱類型語言有關,這意味着JavaScript總是比Java慢?爲什麼不在運行前編譯Node.js?
19
A
回答
21
一些Node.js是C++,並且是預編譯的。但我的理解是,儘可能在Javascript中保留儘可能多的內容,但在性能差的地方使用C++。
Node.js不可能沒有V8 JavaScript Engine,這是什麼編譯的JavaScript。這款發動機以極快的速度而聞名。它是爲Chrome瀏覽器而構建的,但性能也在Node.js中得到了回報。
關於Node.js的性能,作爲一個Web服務器,它至少是至少,與其他領先的Web服務器(如Apache + PHP)相同。因此,在常見使用情況下,性能不是問題。也就是說,有更快的技術。據瞭解,基於Erlang的服務器在併發負載下速度更快(有趣的是,Erlang也是一種動態類型語言)。
對於純數字運算cpu/gpu密集型任務,Node.js不是一個好的選擇,除非您用Fabric Engine來鍛鍊它,在這種情況下,它可以與C++保持一致。
有一對夫婦的當前探索的JavaScript速度問題的項目:
- 飛鏢 - http://www.dartlang.org/support/faq.html。 (它不僅僅是速度,而是它的一部分)。
- 節點原住民 - https://github.com/d5/node.native/
相關問題
- 1. 爲什麼java編譯但不運行?
- 2. 爲什麼編譯之前必須在datastage中運行?
- 3. 爲什麼不編譯編譯錯誤?
- 4. 爲什麼Play 1.x不緩存先前運行的預編譯代碼?
- 5. 爲什麼不編譯?
- 6. 爲什麼不能編譯?
- 7. `this.type`:爲什麼不編譯?
- 8. 爲什麼不編譯?
- 9. 爲什麼不編譯?
- 10. 爲什麼不能編譯?
- 11. 爲什麼不編譯?
- 12. 爲什麼不能編譯?
- 13. 爲什麼不編譯?
- 14. Verilog代碼編譯但爲什麼不能運行?
- 15. 爲什麼我的程序編譯但不能運行?
- 16. 爲什麼node.js運行兩個進程?
- 17. 爲什麼viewDidLoad在didSelectItemAtIndexPath之前運行?
- 18. 爲什麼validates_uniqueness_of在before_create之前運行?
- 19. 爲什麼不在Dev C++編譯
- 20. 爲什麼我不需要在node.js中快速運行
- 21. 爲什麼在端口80上運行node.js可能不安全?
- 22. 爲什麼在編譯時而不是在運行時發現錯誤更好?
- 23. 爲什麼運行時上下文在編譯爲10g的程序中不能在11g上運行?
- 24. 爲什麼不編譯?敵不過「運營商=」
- 25. 這段代碼爲什麼編譯,但運行時有ClassNotFoundException?
- 26. 爲什麼此代碼編譯但未運行
- 27. SBT - 爲什麼運行時出現編譯錯誤?
- 28. 爲什麼這個程序成功編譯但運行失敗?
- 29. 爲什麼Jenkins無法運行已編譯的jar文件
- 30. 爲什麼ant編譯每個類都運行?
這將會回答你的問題:http://java.dzone.com/articles/what-javascript-equivalent – alfasin 2012-02-12 08:29:33
現代JavaScript解釋器是不是真的,但解釋自適應編譯器。但是動態語言通常比靜態語言執行起來要慢(因爲類型檢查),所以它可能不會像Java那麼快。 – 2012-02-12 08:31:26
有靜態類型(或「強大的類型」,如果它讓你感覺很好)是一個使某些語言的性能得到改善的因素,但它遠非唯一因素。我所說的是,你不一定要將特定基準的性能轉化爲高級技術選擇。例如,我經常使用Grails(JVM)和Express(node.js)。如果Grails在10秒內啓動,我很幸運,但Express提供了類似的功能,以毫秒爲單位開始。 – 2012-03-05 09:46:12