Зі Святом, товариші!
Наскільки часто буває такий збіг?
Відповідь під катом.
Вивести наступних 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)
Немає коментарів:
Дописати коментар