(Этот вопрос пытается выяснить, почему запуск программы может отличаться на разных процессорах, поэтому он связан с аспектом программирования).
Следующей программе потребуется 3,6 секунды для запускана Macbook с 2,2 ГГц Core 2 Duo и 1,8 секунды для работы на Macbook Pro с 2,53 ГГц Core 2 Duo.Это почему?
Это немного странно ... зачем удваивать скорость, когда процессор только на 15% быстрее по тактовой частоте?Я дважды проверил измеритель ЦП, чтобы убедиться, что ни одно из 2 ядер не используется на 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: ( Update: Идентификатор 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
2,53 ГГц Intel Core 2 Duo: ( Обновление: Macbookидентификатор: MacBookPro5,4, поэтому, вероятно, это Intel Core 2 Duo Penryn с 3 МБ кэш-памяти второго уровня)
$ 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 QuadCore 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 ГГц медленнее, чем 2.53 ГГц Core 2 Duo.