2012-02-12 20 views
19

我對這項技術的理解是,它被編譯成彙編。在速度上,它比Java慢,但比Ruby和Python快。在客戶端,解釋器是有道理的,但在服務器端我的第一個想法是在運行之前編譯或者至少可以選擇這樣做是最佳的體系結構。如果JavaScript以這種方式預先編譯,它會比Java運行得更快嗎?或者它與弱類型語言有關,這意味着JavaScript總是比Java慢?爲什麼不在運行前編譯Node.js?

+0

這將會回答你的問題:http://java.dzone.com/articles/what-javascript-equivalent – alfasin 2012-02-12 08:29:33

+2

現代JavaScript解釋器是不是真的,但解釋自適應編譯器。但是動態語言通常比靜態語言執行起來要慢(因爲類型檢查),所以它可能不會像Java那麼快。 – 2012-02-12 08:31:26

+2

有靜態類型(或「強大的類型」,如果它讓你感覺很好)是一個使某些語言的性能得到改善的因素,但它遠非唯一因素。我所說的是,你不一定要將特定基準的性能轉化爲高級技術選擇。例如,我經常使用Grails(JVM)和Express(node.js)。如果Grails在10秒內啓動,我很幸運,但Express提供了類似的功能,以毫秒爲單位開始。 – 2012-03-05 09:46:12

回答

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速度問題的項目: