Как ускорить число потоков в секунду (сравнение потоков в elrang и c#)?

Сейчас есть 1000 потоков в c#, которые запускаются, выполняются, закрываются за 1 минуту.
То есть в секунду получается около 16 потоков.

Компьютер i7
4 реальных ядра
4 виртуальных ядра
при работе программы загруженность всех ядер до 30-49%

Вопрос
Что получим с потоками на elrang?
Аналогичную ситуацию 16 потоков в секунду, или erlang сможет это число потоков в секунду увеличить?
Или имеем здесь физическую ограниченность на ядра, то есть в среднем где то 2(4) C# thread на 1(2) ядра процессора?
  • Вопрос задан
  • 2932 просмотра
Пригласить эксперта
Ответы на вопрос 3
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
А собственно что сами потоки делают? Числа молотят или еще какое I/O производят? Может быть дело не в потоках?

Если молотят только числа, то при любом раскладе упремся в число ядер/потоков, не важно на каком языке. Если еще I/O делают, то здесь вариантов масса. При наличии легких потоков, особенно короткоживущих, типа эрланг/скала их можно больше создать, если потоки долгоживущие (), то опять упремся в ядра/потоки.

Да, собственно и само I/O потребляет процессор и может тормозить физические потоки на ожидании ввода/вывода.
Ответ написан
slaykovsky
@slaykovsky
Если не считают эти потоки сложную математику - Эрланг выигрывает 100%. Даже обсуждать не надо.
Ответ написан
begemot_sun
@begemot_sun
Программист в душе.
Следует различать потоки ОС и процессы в Erlang. Я не в курсе про C#, но насколько понимаю он делает потоки ОС (они очень тяжеловестные), чтобы сделать поток ОС надо сделать кучу дел.

Процессы Erlang в противовес потокам очень легковесны, например в памяти занимают минимум 512 байт, быстро создаются, быстро убиваются. ОС не знает об этих процессах, всю работу по обслуживанию (одновременному выполнению на доступных ядрах) берет на себя Erlang.

В ОС вы можете сделать ограниченное кол-во потоков, до 5000.
В Erlang вы можете множить процессы как вам вздумается, главное чтобы памяти хватило. Порядок числа 100000-1000000.

P.S. Добавьте тег Erlang.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы