Tôi hiện đang sử dụng Java, tôi đã đọc rất nhiều về Erlang trên mạng, và tôi có 2 câu hỏi lớn:bao nhiêu CPU là cần thiết trước khi Erlang là nhanh hơn so với đơn luồng Java
thế nào chậm hơn nhiều (nếu có) sẽ Erlang trên Java đơn giản?
Tôi giả định ở đây rằng Java sẽ nhanh hơn từ shootout benchmarks trên mạng (Erlang không làm tốt điều đó). Vì vậy, có bao nhiêu CPU nữa tôi sẽ cần phải làm cho Erlang tỏa sáng trên Java đơn luồng (trong tình hình cụ thể của tôi, đưa ra dưới đây)?Sau khi đọc xung quanh về Erlang trong một thời gian tôi đã nhấn vào một số ý kiến / bài viết nói rằng hầu hết các hệ thống Erlang lớn chứa một số lượng tốt của C/C++.
Đây có phải là lý do tốc độ (giả định của tôi) hay cái gì khác không? tức là tại sao điều này lại được yêu cầu?
Tôi đã đọc về số lượng bộ vi xử lý trong hầu hết các máy móc và mô hình luồng khó (tôi đồng ý) nhưng tôi đang tìm hiểu khi nào "dòng" sẽ bị gạch chéo để tôi có thể thay đổi ngôn ngữ/mô hình vào đúng thời điểm.
Một chút nền/ngữ cảnh:
Tôi đang làm việc phía máy chủ trên các dịch vụ Java có liên kết CPU và dễ dàng thực hiện song song. Điều này là do, thông thường, một bản cập nhật đến (thông qua TCP) kích hoạt thay đổi cho nhiều (100s) kết quả đầu ra.
Các tính toán thường khá đơn giản (vài vòng, chỉ cần nhiều số học) và các đầu vào đang đến khá nhanh (100/s).
Hiện tại chúng tôi đang chạy trên 4 máy CPU và chạy nhiều dịch vụ trên mỗi máy (vì vậy đa luồng khá đơn giản và Java dường như chạy nhanh hơn mà không cần khối đồng bộ, v.v. Bây giờ có một sự thúc đẩy mạnh mẽ về tốc độ và bây giờ chúng ta có thể truy cập tới 24 máy xử lý (cho mỗi tiến trình nếu cần) vì vậy tôi tự hỏi làm thế nào tốt nhất để tiến hành - đa luồng Java đa luồng hoặc một cái gì đó dễ dàng hơn để mã hóa, như Erlang.
Tôi đã đọc câu hỏi đầy đủ của bạn và đã chỉnh sửa câu trả lời của tôi để cung cấp một cuộc thảo luận để bạn xem điểm mấu chốt của quyết định là gì. –