Параллельная эффективность программы и количество потоков процессора - PullRequest
1 голос
/ 25 марта 2011

Привет, ребята, я работаю над параллельной программой в Scala, и я провожу некоторые тесты для проверки эффективности, но, похоже, я получаю некоторые действительно странные числа.или процессы порождены.Я ожидаю увеличения времени выполнения, так как эти процессы увеличиваются с 1 до точки, когда накладные расходы на связь и условия гонки становятся достаточно высокими, чтобы их отменить.Так, например, я ожидаю увидеть что-то вроде:

Процессы ------ 1 ------ 2 ------ 3 ------ 4 ----- 5 ------ 6 ------ 7

Время работы (сек) ---- 3 ------- 2.5 ------- 2 ------ 1.5 ------- 2 ------- 2.5 ------- 3

В любом случае я хотел бы спросить, если кто-нибудь знает, какпроцессор Intel Core i5-430M может поддерживать множество потоков.Я знаю, что, как правило, имеет EDIT: 2 ядра и 4 потока.Означает ли это, что производительность должна начать ухудшаться после запуска 5 и более процессов?Как и в приведенном выше примере?

Любая помощь будет оценена.

Ответы [ 2 ]

4 голосов
/ 25 марта 2011

Используйте Runtime.getRuntime (). AvailableProcessors (). Как правило, для приложений, интенсивно использующих процессор, выигрыш в использовании большего количества потоков не превышает количество доступных ядер / процессоров. Однако, если некоторые потоки блокируют операции ввода-вывода, например, вы можете получить больше потоков.

Обратите внимание, что всякий раз, когда это возможно, вы должны использовать библиотеку java.util.concurrent вместо того, чтобы писать собственный код параллелизации / параллелизма.

0 голосов
/ 25 марта 2011

http://ark.intel.com/Product.aspx?id=43537

В этой спецификации Intel сказано, что количество ядер равно 2, а количество потоков равно 4.

...