Вычисление Числа ПИ как бенчмарк

May 17, 2023 22:37

Используем ряд Лебница, чтобы измерить производительнось Ruby на двух разных машинах

Эта блестящая идея возникла во время настройки Ruby на сервере. От нечего делать через какое-то время она была реализована. Мой сервер одноядерный, при этом на моем домашнем аймаке 6 ядер core i5 8500 и мне захотелось выяснить насколько же различается их производительность. Нужно пояснить, что хостер не уточняет модель процессора, ограничиваясь лишь частотой, 3.2ГГц.

Я не особенно искушен в написании бенчмарков, поэтому выбрал то, что первое пришло в голову - вычисление числа Пи методом бесконечного ряда Лейбница. В дикой молодости вычитал про него в одной книге по Delphi и сейчас именно он мне вспомнился. Используя гугл, я освежил свои знания. Вот как он работает/выглядит на пальцах:

π = (4/1) - (4/3) + (4/5) - (4/7) + (4/9)…

Если его визуализировать, то это будет похоже на подпрыгивающий шарик, который с каждым отскоком приближается к полу. Алгоритм несложный, его легко записать на языке программирования и он состоит из огромного числа примитивных вычислений.

Вот как выглядит моя версия метода (с небольшой помощью copilot - да я сейчас тестирую Github Copilot и эта штука совершенно точно достойна отдельного поста):



pi = 0
divider = 1
precision = 10_000_000

puts «Calculating PI with precision of #{precision}…»
for i in (1..precision)
if i % 2 == 0
pi -= 4.0/divider
else
pi += 4.0/divider
end
divider += 2
end
puts pi

Я слышал, что виртуальная машина Ruby однопоточная и не использует многоядерность современных процессоров (за что ее немного поругивают) и вроде как этот факт должен уравнять мой многоядерный домашний мак и одноядерный VPS. Однако, как выяснилось на поверку, результаты несколько отличаются.

После нескольких запуском я получил следующие результаты, которые я слегка усреднил. Время работы скрипта (шелл-команда time) с точностью в 10 млн итераций:

  • Мой iMac - 0,57 real
  • VPS - real 1.22

Как видно, двухкратный перевес в пользу мака. Вообще надо сказать, что результаты на сервере немного плавали. В подавляющем числе запусков он показывал примерно те же цифры, что в результатах, но были несколько моментов, когда время выполнения скрипта было даже меньше секунды. Честно говоря, я так и не понял с чем это связано.

Итак. итог теста. По-видимому мой аймак в два раза быстрее сервера. И это приятно. С другой стороны, серверу вполне достаточно его мощности. На нем крутится пара веб-приложений и обвес к ним. Плюс к этому у сервера есть преймущество по времени - он работает 24 часа в сутки и семь дней в неделю. Домашний компьютер я в таком режиме не использую.
Previous post Next post
Up