Мне было интересно, может ли простая программа без потоков работать быстрее на некоторых компьютерах с множеством ядер? или на кластере Linux-серверов? Недавно я запустил свой алгоритм, который должен обрабатывать миллиарды IP-пакетов на моем ПК (ядро i7 с 16 ГБ оперативной памяти), и для завершения обработки потребовалось 1881 минут. Затем я подумал, что неплохо запустить алгоритм на кластерах Linux-серверов на каждом узле с 10 процессорами и 48 ГБ оперативной памяти, чтобы быстрее получить результаты. Однако между этими двумя экспериментами нет большой разницы. Может кто-то комментирует то, что мне не хватает?Как запустить java-программу быстрее?
ответ
Если ваш алгоритм фактически не использует эти множественные экземпляры и дополнительную память, не должно быть большой разницы. Параллельное программирование - это своеобразное искусство, и «регулярная» однопоточная программа не просто превращается в параллель сама по себе.
Если у вас есть нить исполнения большего количества ядер, CPU или машины не помогут. Только более быстрый процессор будет ускорять работу, и только в том случае, если ваш процесс связан с ЦП, а не с привязкой к IO.
Прежде всего, вы должны проверить, где потрачено время обработки, в CPU или ожидает ввода-вывода. Если у вас есть значительное количество использования ЦП, вы можете попытаться распараллелить свою работу, то есть разделить данные на куски и иметь разные потоки соответственно. машины обрабатывают их параллельно.
- 1. C# Как запустить приложение быстрее
- 2. Запустить макрос быстрее
- 3. Как я могу запустить приложение быстрее
- 4. Как я могу запустить свой PyCharm быстрее?
- 5. Как я могу запустить IIS7 быстрее?
- 6. JDBC запустить запрос быстрее второй раз
- 7. Как запустить код Clojure быстрее из командной строки?
- 8. Как я могу запустить этот рамочный объект образец быстрее
- 9. Как запустить цикл внутри цикла быстрее в javascript
- 10. Как я могу запустить этот UPDATE-запрос быстрее?
- 11. Как построить Chromium быстрее?
- 12. Как сделать rsync быстрее?
- 13. Как JVM быстрее выполняет математические вычисления быстрее?
- 14. Как скачать быстрее?
- 15. Как сделать ВЫБРАТЬ быстрее
- 16. Как сделать отражение быстрее?
- 17. Как читать данные быстрее?
- 18. Achartengine как скользить быстрее
- 19. Как перечислить каталоги быстрее?
- 20. Как сделать MATLAB быстрее?
- 21. Как сделать код быстрее?
- 22. Как сделать Алею быстрее?
- 23. Как загрузить MKMapView быстрее?
- 24. Как сделать GDB быстрее
- 25. Как сделать сайт быстрее?
- 26. Как загрузить JQuery быстрее?
- 27. Как скомпилировать ускорение быстрее?
- 28. Как вставить записи быстрее
- 29. Как сделать запрос быстрее?
- 30. Как сделать Tesseract быстрее
Является ли ваша программа связанной с процессором или IO-привязана? вы могли бы запустить верхнюю команду, чтобы узнать, сколько ядер вы используете? – qqibrow
Ответ: «это зависит», от вашего кода, от входных данных и от того, как вы распространяете свою задачу, и некоторых других вещей. Поскольку ни одна из этих деталей не дана ... ну, это зависит – reto
Возможно, вы ищете Hadoop? – Tanay