Зі Святом, товариші!
Наскільки часто буває такий збіг?
Відповідь під катом.
Вивести наступних 13 Днів Програміста у п'ятницю 13-го.
require 'date' puts (Date.new(2013)..Date.new(9999)).lazy.select{|d| d.yday == 256 && d.day == 13 && d.friday?}.first(13)
2013-09-13 2019-09-13 2030-09-13 2041-09-13 2047-09-13 2058-09-13 2069-09-13 2075-09-13 2086-09-13 2097-09-13 2109-09-13 2115-09-13 2126-09-13
Не лінивий читач помітив, що в коді використовується лінивий Enumerator, який з'явився в Ruby 2.0.
Провів простий бенчмарк для визначення порівняльних характеристик продуктивності.
require 'date' require 'benchmark' iterations = 100 Benchmark.bm(20) do |bm| bm.report('Enumerator#lazy') do iterations.times do (Date.new(2013)..Date.new(9999)).lazy.select{|d| d.yday == 256 && d.day == 13 && d.friday?}.first(13) end end bm.report('Enumerator') do iterations.times do (Date.new(2013)..Date.new(9999)).select{|d| d.yday == 256 && d.day == 13 && d.friday?}.first(13) end end end
Висновки робіть самі.
user system total real Enumerator#lazy 2.240000 0.000000 2.240000 ( 2.256149) Enumerator 163.970000 0.000000 163.970000 (164.479462)
Немає коментарів:
Дописати коментар