(В этом вопросе делается попытка выяснить, почему выполнение программы может отличаться на разных процессорах, поэтому это связано с аспектом производительности программирования.)
Следующая программа займет 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 ГГц.