У меня есть программа, которая запускается и создает модель данных в памяти, а затем создает (указанное в командной строке) количество потоков для запуска нескольких алгоритмов проверки строк по входному набору и этой модели данных.Работа распределяется между потоками по входному набору строк, а затем каждый поток повторяет один и тот же экземпляр модели данных в памяти (который никогда не обновляется, поэтому нет проблем с синхронизацией).
I 'я запускаю это на 64-битном сервере Windows 2003 с 2-мя четырехъядерными процессорами, и, глядя на диспетчер задач Windows, они не достигают максимума (и при этом они не выглядят так, как будто они особенно облагаются налогом), когда я запускаю с 10 потоками,Это нормальное поведение?
Похоже, что все 7 потоков выполняют одинаковый объем работы за одинаковое количество времени, поэтому вы бы порекомендовали вместо этого работать с 7 потоками?
Должен ли я его запуститьс большим количеством потоков? ... Хотя я предполагаю, что это может быть вредно, так как JVM будет больше переключать контекст между потоками.
В качестве альтернативы, следует ли мне запускать его с меньшим количеством потоков?
В качестве альтернативы, какой лучший инструмент я мог бы использовать для измерения этого? ... Может ли инструмент профилирования помочь мне здесь - действительно, является ли один из нескольких профилировщиков лучшим в обнаружении узких мест (если он у меня есть), чем остальные?
Обратите внимание, что сервер также работает под управлением SQL Server 2005 (это может или не может иметь значение), но ничегомногое происходит в этой базе данных, когда я запускаю свою программу.
Обратите также внимание, что потоки выполняют только сопоставление строк, они не выполняют никаких операций ввода-вывода или работы с базой данных или чего-либо еще, что им может потребоваться подождатьна.