В настоящее время я использую Java, я много читал об Erlang в сети, и у меня есть два больших вопроса:
-
Насколько медленнее (если есть), будет Erlang над простой Java?
Я предполагаю, что Java будет быстрее из контрольных точек перестрелки в сети (Erlang не делает этого хорошо). Итак, сколько еще процессоров мне понадобится, чтобы заставить Erlang сиять над однопотоковой Java (в моей конкретной ситуации, приведенной ниже)? -
После прочтения около Erlang какое-то время я наткнулся на ряд комментариев/сообщений, в которых говорится, что большинство больших систем Erlang содержат хорошее количество C/С++.
Это по причинам скорости (мое предположение) или что-то еще? Для чего это необходимо?
Я читал о количестве процессоров в большинстве машин, которые поднимаются, и моделирование потоков жестко (я согласен), но я хочу узнать, когда "линия" будет пересекаться, чтобы я мог изменить язык/парадигму в нужное время.
Немного фона/контекста:
Я работаю на стороне сервера на Java-сервисах, которые очень привязаны к процессору и легко выполняются параллельно. Это связано, как правило, с одним входящим обновлением (через TCP), инициирующим изменение на несколько (100 с) выходов.
Вычисления обычно довольно простые (несколько циклов, просто много арифметических), и входы поступают довольно быстро (100/с).
В настоящее время мы работаем на четырех процессорах и выполняем несколько сервисов на каждом (поэтому многопоточность довольно бессмысленна, и Java, похоже, работает быстрее без блоков синхронизации и т.д., чтобы сделать его многопоточным). Теперь есть сильный толчок к скорости, и теперь у нас есть доступ к 24 процессорным машинам (для каждого процесса, если это необходимо), поэтому мне интересно, как лучше всего продолжить - массивно многопоточную Java или что-то более простое, например, Erlang.