We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Style/RedundantSortBlock
# bad array.sort { |a, b| a <=> b } # good array.sort
It is shorter and faster to just use .sort when default implementation is specified explicitly.
.sort
If this will be accepted, I would submit a PR. If it is better suited for rubocop-performance - let me know.
rubocop-performance
# frozen_string_literal: true require 'bundler/inline' require 'securerandom' gemfile(true) do gem 'benchmark-ips' end ARR10 = 10.times.map { rand(1000) } ARR1000 = 1000.times.map { rand(1000) } ARR1000000 = 1000000.times.map { rand(1000) } ARR_HEXES = 100.times.map { SecureRandom.hex(13) } puts "======== Hexes ========" Benchmark.ips do |x| x.report("sort") { ARR_HEXES.sort } x.report("sort { ... }") { ARR_HEXES.sort { |a, b| a <=> b } } x.compare! end puts "======== 10 ========" Benchmark.ips do |x| x.report("sort") { ARR10.sort } x.report("sort { ... }") { ARR10.sort { |a, b| a <=> b } } x.compare! end puts "======== 1000 ========" Benchmark.ips do |x| x.report("sort") { ARR1000.sort } x.report("sort { ... }") { ARR1000.sort { |a, b| a <=> b } } x.compare! end puts "======== 1_000_000 ========" Benchmark.ips do |x| x.report("sort") { ARR1000000.sort } x.report("sort { ... }") { ARR1000000.sort { |a, b| a <=> b } } x.compare! end
======== Hexes ======== Warming up -------------------------------------- sort 8.389k i/100ms sort { ... } 1.599k i/100ms Calculating ------------------------------------- sort 83.953k (± 3.5%) i/s - 419.450k in 5.002652s sort { ... } 17.233k (± 6.7%) i/s - 86.346k in 5.042224s Comparison: sort: 83953.1 i/s sort { ... }: 17232.9 i/s - 4.87x (± 0.00) slower ======== 10 ======== Warming up -------------------------------------- sort 138.777k i/100ms sort { ... } 40.365k i/100ms Calculating ------------------------------------- sort 1.367M (± 8.1%) i/s - 6.800M in 5.018862s sort { ... } 396.447k (± 3.2%) i/s - 2.018M in 5.096193s Comparison: sort: 1367357.6 i/s sort { ... }: 396447.4 i/s - 3.45x (± 0.00) slower ======== 1000 ======== Warming up -------------------------------------- sort 991.000 i/100ms sort { ... } 146.000 i/100ms Calculating ------------------------------------- sort 9.693k (± 6.2%) i/s - 48.559k in 5.031296s sort { ... } 1.416k (± 7.8%) i/s - 7.154k in 5.091314s Comparison: sort: 9693.2 i/s sort { ... }: 1415.8 i/s - 6.85x (± 0.00) slower ======== 1_000_000 ======== Warming up -------------------------------------- sort 1.000 i/100ms sort { ... } 1.000 i/100ms Calculating ------------------------------------- sort 9.995 (± 0.0%) i/s - 50.000 in 5.009892s sort { ... } 1.431 (± 0.0%) i/s - 8.000 in 5.589687s Comparison: sort: 10.0 i/s sort { ... }: 1.4 i/s - 6.98x (± 0.00) slower
The text was updated successfully, but these errors were encountered:
There is Performance/CompareWithBlock cop similar to this cop. Maybe it's preferable to be added to rubocop-performance as a new cop.
Performance/CompareWithBlock
Sorry, something went wrong.
Performance/SortReverse
Performance/RedundantSortBlock
Successfully merging a pull request may close this issue.
It is shorter and faster to just use
.sort
when default implementation is specified explicitly.If this will be accepted, I would submit a PR. If it is better suited for
rubocop-performance
- let me know.Benchmark
Results
The text was updated successfully, but these errors were encountered: