2012-02-12 12 views
19

Moje zrozumienie technologii polega na tym, że jest ona przygotowywana w locie do montażu. Na spektrum prędkości jest wolniejszy niż Java, ale szybszy niż Ruby i Python. Po stronie klienta tłumacz ma sens, ale po stronie serwera moją pierwszą myślą jest to, że kompilacja przed uruchomieniem lub przynajmniej opcja ta jest optymalną architekturą. Jeśli JavaScript został wcześniej skompilowany w ten sposób, czy działałby szybciej niż Java? Czy ma to coś wspólnego ze słabo pisanymi językami, co oznacza, że ​​JavaScript będzie zawsze wolniejszy niż Java?Dlaczego Node.js nie jest kompilowany przed uruchomieniem?

+0

będzie odpowiedzieć na pytanie: http://java.dzone.com/articles/what-javascript-equivalent – alfasin

+2

tłumaczy Nowoczesne JavaScript jest naprawdę nie tłumaczy jednak adaptacyjne kompilatory. Jednak języki dynamiczne są zwykle wolniejsze do wykonania (z powodu sprawdzania typów) niż języki statyczne, więc prawdopodobnie nie będzie tak szybko, jak Java. –

+2

Posiadanie statycznego pisania (lub "silnego pisania", jeśli sprawia, że ​​czujesz się dobrze) jest jednym z czynników, który poprawia jakość niektórych języków, ale nie jest to jedyny czynnik. To, co mówię, to to, że nie można przetłumaczyć wydajności w konkretnych testach porównawczych na wybór technologii na wysokim poziomie. Na przykład regularnie korzystam z Grails (JVM) i Express (node.js). Byłbym szczęśliwy, gdyby Grails zaczął w mniej niż 10 sekund, ale Express, który oferuje mi porównywalną funkcjonalność, zaczyna się w milisekundach. –

Odpowiedz

21

Niektóre z Node.js ma C++ i jest wstępnie skompilowany. Rozumiem jednak, że dołożono wszelkich starań, aby zachować jak najwięcej kodu w JavaScript, ale gdy wydajność była niska, użyto C++.

Node.js nie byłoby możliwe bez V8 JavaScript Engine, która jest tym, co kompiluje javascript. Ten silnik jest znany z tego, że jest niezwykle szybki. Został zbudowany dla przeglądarki Chrome, ale wydajność również się opłaca w Node.js.

Jeśli chodzi o wydajność Node.js, jako serwer internetowy jest to co najmniej na równi z innymi wiodącymi serwerami WWW, takimi jak Apache + PHP. Więc wydajność nie jest problemem w powszechnym użyciu. Powiedział, że istnieją szybsze technologie. Serwery oparte na Erlangu są znane z tego, że są szybsze przy jednoczesnym ładowaniu (co ciekawe, Erlang jest również językiem o dynamicznym typie).

W celu wykonywania intensywnych zadań cpu/gpu w liczbie mnogiej, Node.js nie jest dobrym wyborem, chyba że go hartujesz z Fabric Engine, w którym to przypadku może być równy C++.

Istnieje kilka projektów, które są obecnie badających zagadnienia prędkości z javascript:

Powiązane problemy