Почему некоторый код Ruby работает в два раза быстрее на 2,53 ГГц, чем на 2,2 Процессор Core 2 Duo с тактовой частотой ГГц?

(В этом вопросе делается попытка выяснить, почему выполнение программы может отличаться на разных процессорах, поэтому это связано с аспектом производительности программирования.)

Следующая программа займет 3,6 секунды для запуска на Macbook, который имеет процессор Core 2 Duo с тактовой частотой 2,2 ГГц и 1,8 секунды для работы на Macbook Pro с процессором Core 2 Duo с тактовой частотой 2,53 ГГц. Это почему?

Это немного странно ... зачем удваивать скорость, если тактовая частота процессора всего на 15% выше? Я дважды проверил счетчик ЦП, чтобы убедиться, что ни одно из двух ядер не используется на 100% (чтобы увидеть, что ЦП не занят чем-то другим). Может быть, потому, что одна из них - Mac OS X Leopard, а другая - Mac OS X Snow Leopard (64 бит)? Оба работают под управлением Ruby 1.9.2.

p RUBY_VERSION
p RUBY_DESCRIPTION if defined? RUBY_DESCRIPTION
n = 9_999_999
p n

t = 0; 1.upto(n) {|i| t += i if i%3==0 || i%5==0}; p t

Следующее - это просто вывод программы:

На 2,2 ГГц Core 2 Duo: ( Обновление: Идентификатор Macbook: MacBook3,1, следовательно, вероятно, Intel Core 2 Duo (T7300 / T7500))

$ time ruby 1.rb
"1.9.2"
"ruby 1.9.2p0 (2010-08-18 revision 29036) [i386-darwin9.8.0]"
9999999
23333331666668

real  0m3.784s
user  0m3.751s
sys  0m0.021s

Intel Core 2 Duo 2,53 ГГц: ( Обновление: Идентификатор Macbook: MacBookPro5,4, следовательно, вероятно, Intel Core 2 Duo Penryn с 3 МБ на кристалле L2. кэш)

$ time ruby 1.rb
"1.9.2"
"ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]"
9999999
23333331666668

real  0m1.893s
user  0m1.809s
sys  0m0.012s

Тестовый запуск в Windows 7:

time_start = Time.now

p RUBY_VERSION
p RUBY_DESCRIPTION if defined? RUBY_DESCRIPTION

n = 9_999_999
p n

t = 0; 1.upto(n) {|i| t += i if i%3==0 || i%5==0}; p t

print "Took #{Time.now - time_start} seconds to run\n"

Intel Q6600 Quad Core 2,4 ГГц под управлением Windows 7, 64-разрядная версия:

C:\> ruby try.rb
"1.9.2"
"ruby 1.9.2p0 (2010-08-18) [i386-mingw32]"
9999999
23333331666668
Took 3.248186 seconds to run

Intel 920 i7 2,67 ГГц под управлением Windows 7, 64-разрядная версия:

C:\> ruby try.rb
"1.9.2"
"ruby 1.9.2p0 (2010-08-18) [i386-mingw32]"
9999999
23333331666668
Took 2.044117 seconds to run

Также странно, почему i7 с частотой 2,67 ГГц медленнее, чем Core 2 Duo с частотой 2,53 ГГц.

9
задан nopole 20 March 2011 в 08:12
поделиться