Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require "benchmark/ips"
- Benchmark.ips do |x|
- x.config(time: 5, warmup: 2)
- index = 42
- page_size = 10
- x.report("separate") do |times|
- 1.upto(times) do
- page = index / page_size
- offset = index % page_size
- end
- end
- x.report("separate i-assign") do |times|
- 1.upto(times) do
- page, offset = index / page_size, index % page_size
- end
- end
- x.report("divmod") do |times|
- 1.upto(times) do
- page, offset = index.divmod(page_size)
- end
- end
- x.report("divmod no i-assign") do |times|
- 1.upto(times) do
- page_and_offset = index.divmod(page_size)
- end
- end
- x.report("separate no-assign") do |times|
- 1.upto(times) do
- index / page_size
- index % page_size
- end
- end
- x.report("divmod no-assign") do |times|
- 1.upto(times) do
- index.divmod(page_size)
- end
- end
- x.compare!
- end
- # >> Calculating -------------------------------------
- # >> separate 109.038k i/100ms
- # >> separate i-assign 102.224k i/100ms
- # >> divmod 101.067k i/100ms
- # >> divmod no i-assign 103.093k i/100ms
- # >> separate no-assign 112.813k i/100ms
- # >> divmod no-assign 105.110k i/100ms
- # >> -------------------------------------------------
- # >> separate 12.945M (± 5.8%) i/s - 64.550M
- # >> separate i-assign 8.062M (± 2.9%) i/s - 40.276M
- # >> divmod 8.049M (± 2.5%) i/s - 40.225M
- # >> divmod no i-assign 8.001M (± 1.1%) i/s - 40.000M
- # >> separate no-assign 14.208M (± 3.0%) i/s - 70.959M
- # >> divmod no-assign 9.148M (± 1.1%) i/s - 45.828M
- # >>
- # >> Comparison:
- # >> separate no-assign: 14207716.5 i/s
- # >> separate: 12944759.7 i/s - 1.10x slower
- # >> divmod no-assign: 9148332.3 i/s - 1.55x slower
- # >> separate i-assign: 8062392.9 i/s - 1.76x slower
- # >> divmod: 8048842.0 i/s - 1.77x slower
- # >> divmod no i-assign: 8001018.8 i/s - 1.78x slower
- # >>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement