Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Fast Ruby for hash_update_vs_hash_brackets

Đang mở
#194 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
50/100
Loại issue
Tài liệu
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
ruby
Lĩnh vực
performance

Hướng nghiên cứu

Sử dụng ví dụ benchmark-ips được cung cấp làm điểm bắt đầu và so sánh Hash#[]= với Hash#update trong bộ sưu tập benchmark fast-ruby hiện có. Thêm mục code/hash/update-vs-[]=.rb tương ứng cùng với đầu ra benchmark Ruby được hiển thị; hoàn tất khi phần so sánh được ghi lại bên cạnh merge_bang_vs_[]=.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Suggestion

Hash#update is an alias for Hash#merge!

Currently we have merge_bang_vs_[]= which suggests that Hash#[]= is faster and Hash#merge!() is slower.
But we dont have any suggestions for update_vs_[]= i.e., Hash#update() vs Hash#[]=.

require 'benchmark/ips'

ENUM = (1..100)

def fast
  ENUM.each_with_object({}) do |e, h|
    h[e] = e
  end
end

def slow
  ENUM.each_with_object({}) do |e, h|
    h.update(e => e)
  end
end

Benchmark.ips do |x|
  x.report('Hash#[]=') { fast }
  x.report('Hash#update') { slow }
  x.compare!
end
##### `Hash#update` vs `Hash#[]=` [code](code/hash/update-vs-\[\]=.rb)

$ ruby -v code/hash/update-vs-\[\]=.rb
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-darwin18]

Warming up --------------------------------------
            Hash#[]=     7.453k i/100ms
         Hash#update     4.311k i/100ms
Calculating -------------------------------------
            Hash#[]=     74.764k (± 1.9%) i/s -    380.103k in   5.085962s
         Hash#update     43.220k (± 0.8%) i/s -    219.861k in   5.087364s

Comparison:
            Hash#[]=:    74764.0 i/s
         Hash#update:    43220.1 i/s - 1.73x  (± 0.00) slower

Can we extend this to Hash#update()?

Ngôn ngữ chính
Ruby
Star
5.7k
Fork
370
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của fastruby/fast-ruby

Tất cả issue của fastruby/fast-ruby

Issue tương tự

Thêm issue về Ruby

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.