Skip to content

Instantly share code, notes, and snippets.

@huacnlee
Created December 16, 2015 03:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save huacnlee/b04788ae6df42fe769e4 to your computer and use it in GitHub Desktop.
Save huacnlee/b04788ae6df42fe769e4 to your computer and use it in GitHub Desktop.
GitLab Ability class add class method cache benchmarks
Calculating -------------------------------------
project_guest_rules without method cache
79.352k i/100ms
project_guest_rules with method cache
93.634k i/100ms
-------------------------------------------------
project_guest_rules without method cache
2.865M (±32.5%) i/s - 11.982M
project_guest_rules with method cache
4.419M (± 7.4%) i/s - 22.004M
Comparison:
project_guest_rules with method cache: 4418908.0 i/s
project_guest_rules without method cache: 2864514.0 i/s - 1.54x slower
Calculating -------------------------------------
project_report_rules without method cache
53.126k i/100ms
project_report_rules with method cache
97.473k i/100ms
-------------------------------------------------
project_report_rules without method cache
1.093M (±36.5%) i/s - 4.675M
project_report_rules with method cache
4.420M (± 7.2%) i/s - 22.029M
Comparison:
project_report_rules with method cache: 4420054.3 i/s
project_report_rules without method cache: 1092509.6 i/s - 4.05x slower
require 'benchmark/ips'
require_relative 'app/models/ability'
puts Ability.project_guest_rules.inspect
puts "--------------------"
puts Ability.project_guest_rules_with_method_cache.inspect
Benchmark.ips do |x|
x.report("project_guest_rules without method cache") do
Ability.project_guest_rules
end
x.report("project_guest_rules with method cache") do
Ability.project_guest_rules_with_method_cache
end
x.compare!
end
Benchmark.ips do |x|
x.report("project_report_rules without method cache") do
Ability.project_report_rules
end
x.report("project_report_rules with method cache") do
Ability.project_report_rules_with_method_cache
end
x.compare!
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment