Параллельная обработка с Java на настольных и мобильных процессорах - PullRequest
1 голос
/ 28 декабря 2011

Я разрабатываю код параллельной обработки для решения задачи оптимизации.

Сначала я пытаюсь запустить только одно задание оптимизации, назовем его задачей (1).И затем я пытаюсь запустить две копии одного и того же задания в параллельном задании (2).Теоретически эти две задачи будут занимать одинаковое количество времени.

Мой вопрос таков:

Когда я запускаю эти задачи на своем настольном компьютере i5, задача (1) и задача (2) занимают одно и то же времязаканчивать.С этим проблем нет.Это то, чего я ожидал.

Но когда я использую свой ноутбук i7, run (2) занимает примерно% в 30 раз больше, чем run (1).Я не понимаю этого разрыва.Почему два совершенно одинаковых параллельных задания занимают% 30 больше времени?Может ли быть аппаратное различие между процессорами для мобильных ПК и настольных ПК?

Код и данные полностью совпадают.

Единственное отличие заключается в том, что ноутбук i7 является 64-разрядным, а рабочий стол i5 - 32-разрядным.

У кого-нибудь есть идеи или опыт, связанные с этим?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

Я полагаю, что это из-за аппаратного процессора, кажется, что процессоры для мобильных устройств медленнее, чем для настольных ПК.Я заметил похожую разницу между моим ноутбуком (i7-2600 QM) и моим настольным компьютером (i7-2600), где выполнение одного и того же параллельного задания в Java занимает на 33% меньше времени на настольном компьютере.

1 голос
/ 28 декабря 2011

Это может объяснить, почему 64-битная версия работает медленно. Часто задаваемые вопросы по Java HotSpot VM

Как правило, преимущества адресации больших объемов памяти приводят к небольшой потере производительности в 64-битных виртуальных машинах по сравнению с запуском того же приложения на32-битная ВМ.Это связано с тем, что каждый собственный указатель в системе занимает 8 байтов вместо 4. Загрузка этих дополнительных данных влияет на использование памяти, что приводит к немного более медленному выполнению в зависимости от того, сколько указателей загружено во время выполнения.ваша программа на Java.Хорошая новость заключается в том, что на платформах AMD64 и EM64T, работающих в 64-битном режиме, Java VM получает несколько дополнительных регистров, которые она может использовать для генерации более эффективных последовательностей собственных команд.Эти дополнительные регистры повышают производительность до такой степени, что при сравнении 32- и 64-разрядной скорости выполнения часто вообще не происходит потери производительности.
Разница в производительности при сравнении приложения, работающего на 64-разрядной платформе, с 32-разрядной платформой наПри переходе на 64-битную виртуальную машину SPARC ухудшается на 10-20%.На платформах AMD64 и EM64T эта разница колеблется от 0 до 15% в зависимости от количества указателей, обращающихся к вашему приложению.

...