nodejs Рабочие потоки против java многопоточности, которая быстрее и потребляет меньше ресурсов процессора - PullRequest
0 голосов
/ 06 апреля 2020

ноды рабочих потоков против java многопоточности, какая производительность лучше? меньше процессора? например, я хочу напечатать что-нибудь 10 миллионов раз. что будет печатать быстрее?

преимущества и недостатки обоих?

1 Ответ

0 голосов
/ 07 апреля 2020

Если честно, вам нужно выполнить профилирование, чтобы быть более точным, но я могу предоставить вам некоторую информацию об обоих.

Недавно я говорил о параллелизме в NodeJS, вот презентация : https://www.slideshare.net/RhuanKarlusSilva/nodejs-under-the-hood-concurrency-and-multithreading К сожалению, он написан на португальском языке (учитывая, что я бразилец), но вы найдете там мой профиль с вопросом и, если хотите поговорить об этом, просто отправьте мне сообщение.

Тем не менее, давайте go в колпаки:

О процессоре

NodeJS Рабочие потоки:

Хорошо, NodeJS "Рабочий Потоки "немного сложнее, когда вы используете модуль worker_threads для создания другого потока для запуска сценария или кода строки шаблона, который вы можете передать ему, среда выполнения NodeJS будет выполнять следующие действия внутри одного и того же процесса:

  • Создание другого экземпляра LibUV
  • Создание другого экземпляра V8

Это произойдет внутри того же процесса, так что, как вы можете видеть, вы получите то же самое NodeJS время выполнения внутри потока, но это та же среда выполнения. Так что в этом случае он не будет использовать ни пул потоков LibUV, ни функции V8. У нового потока есть свой собственный, и если вы хотите связать основной и дочерний потоки, вам нужно будет использовать Node API, потому что они не разделяют одну и ту же память.

Это то, что будет случается:

enter image description here


Java Потоки

В Java потоки работают немного по-другому, все они работают внутри той же JVM, разделяющей все, и вам нужно синхронизировать их, чтобы избежать проблем параллелизма, таких как «повреждение памяти» (я называю повреждение памяти процессом сохранения неправильных значений, основанных на состоянии некоторого объекта, доступного более чем одному потоку) .

Дело в том, что из-за этого Я ДУМАЮ , что Java потоки, вероятно, потребляют меньше ЦП, чем NodeJS рабочих потоков.


О производительности

Хорошо, производительность - это другое дело ... Производительность каждого метода будет зависеть от того, что вы делаете, и от вашей реализации. Трудно ответить на этот вопрос, потому что он будет иметь много переменных. Возможно, если вы расскажете, что вы хотите реализовать, я мог бы помочь немного больше.

Надеюсь, это вам немного помогло. Береги себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...