2011-11-06 29 views
10

Tôi hiện đang viết một ứng dụng javascript phía máy khách thực hiện thao tác hình ảnh. Một số hoạt động mà nó thực hiện hiện tại khá chậm để chạy trong trình duyệt (mất khoảng 2-3 giây)Liệu node.js có bất kỳ lợi thế hiệu suất nào trên Javascript phía máy khách (so với Chrome/V8) không?

Một giải pháp mà tôi đang tìm cách triển khai là để khách hàng nhận được thông tin kết quả thông qua một websocket từ một máy chủ (websocket thay vì AJAX vì nó cần hiển thị thông tin thời gian thực vv) và có máy chủ thực hiện việc nâng hạng nặng thao tác hình ảnh

Node.js là một ứng cử viên rõ ràng cũng được viết bằng Javascript - tuy nhiên ý tưởng đầu tiên của tôi là rằng sẽ không có lợi thế về hiệu suất (phía máy khách của tôi đang chạy trong Chrome/V8 và Node.js cũng là V8) - tôi có đúng khi nghĩ đến điều này không? Hoặc giao diện người dùng Chrome có yêu cầu mất hiệu suất trên máy khách không cảm thấy ở phía máy chủ không? (ví dụ: Chrome có làm nhiều giao diện người dùng hơn trong nền để giữ mọi thứ đáp ứng được rằng máy chủ node.js không dành thời gian làm việc của mình không?)

Liệu node.js có bất kỳ lợi thế hiệu suất nào hay tôi nên sử dụng tốt hơn nhìn vào C hoặc Java web socket máy chủ để làm công việc?

+0

Khi bạn đã viết mã bằng JavaScript, tôi khuyên bạn nên thử Node.js và tự mình xem. Nó không nên mất nhiều công sức. –

+0

@FelixKling Mặc dù nó đã có trong Javascript như bạn nói, nó vẫn sẽ mất khá nhiều công việc để chia mã hiện có thành khách hàng/máy chủ phù hợp với websockets - Tôi chắc chắn muốn tìm một số thông tin hiệu suất. trước khi thực hiện một điều như vậy –

+0

Node.js không phải là nơi thích hợp để thực hiện thao tác xử lý ảnh nặng nề. Nhưng nó là công cụ thích hợp để gọi ImageMagick như một tiến trình con. – generalhenry

Trả lời

4

Khách hàng có lẽ là nơi tốt hơn để thực hiện thao tác hình ảnh nếu bạn đang thực hiện nó trong javascript. Điều tốt đẹp về khách hàng là bạn đã có bộ xử lý (chủ yếu) cho chính mình ... nếu bạn có 20 người thực hiện thao tác hình ảnh cùng một lúc, họ sẽ làm việc đó trên 20 máy.

Rõ ràng là một số nơi có ý nghĩa hơn khi thực hiện thao tác hình ảnh trên máy chủ và trong những trường hợp đó, bạn có thể sử dụng những thứ khác ngoài javascript. V8 trên máy chủ sẽ không chạy nhanh hơn nhiều so với máy khách và nút không thực sự được thực hiện cho các tác vụ chuyên sâu của CPU. Có lẽ một số trường hợp thú vị mà bạn sẽ muốn làm công cụ tương tác trên máy khách và sau đó thực hiện công cụ cuối cùng trên máy chủ và trong trường hợp đó, có lợi thế lớn đối với nút, vì bạn có thể sử dụng cùng một mã.

+0

Mặc dù số lượng khách hàng, v.v. không quá quan trọng đối với dự án này (nghe có vẻ lạ) Tôi nghĩ điều này đến gần nhất để trả lời câu hỏi của tôi, cảm ơn –

1

Bạn không nên xác định nơi bạn sẽ thực hiện các phép tính trên máy chủ hoặc ứng dụng khách, dựa trên tốc độ thực thi javascript duy nhất.

Điều quan trọng hơn là những thứ như khách hàng ước tính của bạn (máy tính để bàn hoặc thiết bị di động), dung lượng máy chủ và mức trung bình ước tính và tải cao điểm.

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