Производительность QThreadPool и QRunnable для многих задач / потоков - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть кусок кода, который должен выполнить 18 миллионов задач.В настоящее время я использую Qt, а точнее QThreadPool с QRunnables для многопоточности операции на моем 8-ядерном процессоре.

У меня есть один класс QRunnable, который инкапсулирует и реализует задачу, которую необходимо повторить 18 миллионов раз.Мне интересно, каковы издержки спулинга QRunnables через QThreadPool.Если есть значительные накладные расходы, это накапливает более 18 миллионов QRunnables, которые нужно протолкнуть через QThreadPool.

Мне интересно, имеет ли смысл вместо этого разбивать 18 миллионов задач на более крупные куски, где, скажем,Каждый QRunnable реализует 10 000 задач вместо одной.Это уменьшило бы общее время вычислений за счет устранения накладных расходов, связанных с QRunnable назначениями и освобождениями в QThreadPool?

Полагаю, реальный вопрос: достаточно ли высока накладные расходы на запуск QRunnables в QThreadPool, чтобы добавить значительное время вычислений, еслииспользуя 18 миллионов QRunnables?

Спасибо всем!

...