2012-02-12 62 views
19

Sự hiểu biết của tôi về công nghệ này là nó được biên dịch khi bay vào lắp ráp. Trên phổ tốc độ, nó chậm hơn Java nhưng nhanh hơn Ruby và Python. Về phía client, một thông dịch viên có ý nghĩa nhưng ở phía máy chủ, suy nghĩ đầu tiên của tôi là biên dịch trước khi chạy, hoặc ít nhất có tùy chọn để làm như vậy, là một kiến ​​trúc tối ưu. Nếu JavaScript được biên dịch trước theo cách này thì nó có chạy nhanh hơn Java không? Hoặc là nó liên quan đến các ngôn ngữ gõ nhẹ có nghĩa là JavaScript sẽ luôn chậm hơn Java?Tại sao Node.js không được biên dịch trước khi chạy?

+0

này sẽ trả lời câu hỏi của bạn: http://java.dzone.com/articles/what-javascript-equivalent – alfasin

+2

dịch viên JavaScript hiện đại là không thực sự thông dịch viên nhưng trình biên dịch thích ứng. Nhưng các ngôn ngữ động thường chậm hơn để thực thi (vì kiểm tra kiểu) so với các ngôn ngữ tĩnh, vì vậy nó có thể sẽ không nhanh như Java. –

+2

Có gõ tĩnh (hoặc "gõ mạnh" nếu nó làm cho bạn cảm thấy tốt) là một yếu tố cung cấp cho một số ngôn ngữ một cải tiến hiệu suất, nhưng nó là xa yếu tố duy nhất. Điều tôi đang nói là bạn không nhất thiết phải dịch hiệu suất trong các tiêu chuẩn cụ thể thành một sự lựa chọn công nghệ cấp cao. Ví dụ, tôi thường xuyên sử dụng Grails (JVM) và Express (node.js). Tôi sẽ may mắn nếu Grails bắt đầu dưới 10 giây, nhưng Express, cung cấp cho tôi chức năng tương đương, bắt đầu bằng mili giây. –

Trả lời

21

Một số Node.js là C++ và được biên dịch trước. Mặc dù sự hiểu biết của tôi là có một nỗ lực để giữ càng nhiều càng tốt trong Javascript càng tốt, nhưng khi hiệu năng kém thì C++ đã được sử dụng.

Node.js sẽ không thể thực hiện được nếu không có V8 JavaScript Engine, đó là những gì biên dịch javascript. Động cơ này nổi tiếng với tốc độ cực nhanh. Nó được xây dựng cho trình duyệt Chrome, nhưng hiệu năng cũng trả tiền trong Node.js.

Về hiệu suất của Node.js, dưới dạng máy chủ web, nó là ít nhất ngang hàng với các máy chủ web hàng đầu khác như Apache + PHP. Vì vậy, hiệu suất không phải là một vấn đề trong trường hợp sử dụng phổ biến. Điều đó nói rằng, có những công nghệ nhanh hơn. Erlang dựa trên các máy chủ được biết đến là nhanh hơn dưới tải đồng thời (thú vị, Erlang cũng là một ngôn ngữ động gõ).

Đối với các nhiệm vụ chuyên sâu cpu/gpu crunching số nguyên, Node.js không phải là lựa chọn tốt, trừ khi bạn làm nóng nó với Fabric Engine, trong trường hợp này có thể ngang bằng với C++.

Có một vài dự án hiện đang khám phá các vấn đề tốc độ với JavaScript:

Các vấn đề liên quan