Speed-up Cache#id_for
Description
Prefer respond_to?
over catching exception which is much slower.
Benchmarks
These main
vs this branch.
$ bundle exec ruby benchmarks/repeated_invocation.rb
Warming up --------------------------------------
cached - known ability - pl-speed-up-cache-id-for
86.067k i/100ms
cached - unknown ability - pl-speed-up-cache-id-for
85.030k i/100ms
uncached - known ability - pl-speed-up-cache-id-for
1.599k i/100ms
uncached - unknown ability - pl-speed-up-cache-id-for
11.711k i/100ms
Calculating -------------------------------------
cached - known ability - pl-speed-up-cache-id-for
845.891k (± 2.3%) i/s - 4.303M in 5.090047s
cached - unknown ability - pl-speed-up-cache-id-for
867.692k (± 1.3%) i/s - 4.422M in 5.096701s
uncached - known ability - pl-speed-up-cache-id-for
16.001k (± 4.1%) i/s - 79.950k in 5.006550s
uncached - unknown ability - pl-speed-up-cache-id-for
100.078k (± 3.5%) i/s - 503.573k in 5.037858s
Comparison:
cached - unknown ability - pl-speed-up-cache-id-for: 867692.5 i/s
cached - known ability - pl-speed-up-cache-id-for: 845890.9 i/s - same-ish: difference falls within error
cached - known ability - pl-benchmark-ips: 477663.2 i/s - 1.82x slower
cached - unknown ability - pl-benchmark-ips: 433737.1 i/s - 2.00x slower
uncached - unknown ability - pl-speed-up-cache-id-for: 100077.6 i/s - 8.67x slower
uncached - unknown ability - pl-benchmark-ips: 92715.1 i/s - 9.36x slower
uncached - known ability - pl-speed-up-cache-id-for: 16000.9 i/s - 54.23x slower
uncached - known ability - pl-benchmark-ips: 12916.3 i/s - 67.18x slower
Related Issues
n/a
Suggested version bump
-
Major (backwards incompatible changes) -
Minor (backwards compatible changes) -
Patch (API compatible changes)
Checklist
-
Tests have been added or updated to cover any changes in behavior -
This does not change the API to consume this library, or a suggested version bump has been provided -
The CHANGELOG.md
has been updated -
No new runtime dependencies have been introduced
Edited by Peter Leitzen