Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cop idea: Array#insert vs Array#unshift #396

Open
ydakuka opened this issue Nov 26, 2023 · 2 comments
Open

Cop idea: Array#insert vs Array#unshift #396

ydakuka opened this issue Nov 26, 2023 · 2 comments

Comments

@ydakuka
Copy link
Contributor

ydakuka commented Nov 26, 2023

https://github.com/fastruby/fast-ruby#arrayinsert-vs-arrayunshift-code

Describe the solution you'd like

# bad
array.insert(0, i)
# good
array.unshift(i)

Rubocop

ydakuka@yauhenid:~/Work/project$ bin/rails_docker rubocop -V
1.57.2 (using Parser 3.2.2.4, rubocop-ast 1.29.0, running on ruby 2.7.8) [x86_64-linux]
  - rubocop-capybara 2.19.0
  - rubocop-factory_bot 2.24.0
  - rubocop-performance 1.19.1
  - rubocop-rails 2.22.0
  - rubocop-rake 0.6.0
  - rubocop-rspec 2.25.0
  - rubocop-thread_safety 0.5.1
@ydakuka
Copy link
Contributor Author

ydakuka commented Nov 26, 2023

I've benchmarked it (ruby 3.3.0).

ydakuka@yauhenid:~/ruby-docker-app$ docker run ruby-app  
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-linux]
Warming up --------------------------------------
       Array#unshift    15.000 i/100ms
        Array#insert     1.000 i/100ms
Calculating -------------------------------------
       Array#unshift    137.945 (± 4.3%) i/s -    690.000 in   5.013164s
        Array#insert      1.050 (± 0.0%) i/s -      6.000 in   5.726303s

Comparison:
       Array#unshift:      137.9 i/s
        Array#insert:        1.0 i/s - 131.38x  slower

@ydakuka
Copy link
Contributor Author

ydakuka commented Nov 26, 2023

real-world-ruby-apps - 18 matches across 16 files
real-world-rails - 25 matches across 22 files

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant