среда, 23 июня 2010 г.

Сила ядер

Некоторое время назад у меня на работе произошел апгрейд рабочего компьютера. Вместо древнего pentium 4 появился Intel Core i7 920 c 6 Gb быстрой памяти на борту. Установив x64 debian я радостно стал проверять насколько быстро собираются библиотеки и мои программы. Первоначальный результат несколько обескуражил: древний boost 1.34.1 собирался более 10 минут! Моему разочарованию не было предела - ну как так - новейшее железо и все еще не может справиться с этим С++ (пусть и с шаблонами)! И тут я вспомнил, что у меня же теперь есть 4 полновесных ядра, которые надо использовать на полную катушку. HT меня в своем время капитально разочаровал, и теперь мне понятно почему. От моих новеньких ядер я вправе был ждать много большего и воистину не разочаровался:


boost 1.34.1: bjam

real 10m51.390s
user 10m8.870s
sys 0m40.031s

boost 1.34.1: bjam -j2

real 5m31.464s
user 10m12.082s
sys 0m40.831s


boost 1.34.1: bjam -j4

real 2m56.273s
user 10m33.492s
sys 0m43.655s


boost 1.34.1: bjam -j8

real 2m27.608s
user 16m33.466s
sys 1m3.984s




Ускорение почти в 5 раз по сравнению с оригинальным результатом! Воистину, закон Мура еще как-то действует! Вот еще некоторые результаты замеров:

gigabase: make

real 0m36.746s
user 0m33.082s
sys 0m3.884s

gigabase: make -j2

real 0m18.256s
user 0m32.758s
sys 0m3.848s


gigabase: make -j4

real 0m9.786s
user 0m34.278s
sys 0m4.036s

gigabase: make -j8

real 0m10.007s
user 0m48.167s
sys 0m4.488s




boost 1.41.0: bjam -j4

real 1m57.435s
user 7m3.522s
sys 0m24.334s

boost 1.41.0: bjam -j8

real 1m39.749s
user 11m4.794s
sys 0m35.562s



В итоге теперь все программы собираю исключительно с -j8 (и от HT оказался какой-то толк) заодно подправив свои настройки в emacs:

(defun my-compile-file ()
"Save all files and compile"
(interactive)
(save-some-buffers 1)
(let (temp)
(compile "make -k -j8")
)
)
(global-set-key [f7] 'my-compile-file)

Комментариев нет:

Отправить комментарий