reverse.detect vs select { ... }.last
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- ruby
- Lĩnh vực
- performance
Hướng nghiên cứu
Bắt đầu bằng cách chạy benchmark reverse.rb được cung cấp với benchmark-ips và so sánh ba cách tiếp cận được nêu. Issue không nêu tên tệp nào trong repository và cũng không chỉ rõ cách tiếp cận thứ ba được đề xuất; để hoàn tất, cần xác định và ghi lại một phương án thay thế cụ thể cùng với kết quả benchmark.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Third approach?
require 'benchmark/ips'
ARRAY = [*1..100]
def faster
ARRAY.reverse_each { |x| break x if (x % 10).zero? }
end
def fast
ARRAY.reverse.detect { |x| (x % 10).zero? }
end
def slow
ARRAY.select { |x| (x % 10).zero? }.last
end
Benchmark.ips do |x|
x.report('Enumerable#reverse_each + break') { faster }
x.report('Enumerable#reverse.detect') { fast }
x.report('Enumerable#select.last') { slow }
x.compare!
end
% ruby reverse.rb
Calculating -------------------------------------
Enumerable#reverse_each + break
115.335k i/100ms
Enumerable#reverse.detect
72.531k i/100ms
Enumerable#select.last
11.243k i/100ms
-------------------------------------------------
Enumerable#reverse_each + break
3.311M (± 7.2%) i/s - 16.493M
Enumerable#reverse.detect
1.255M (± 9.3%) i/s - 6.238M
Enumerable#select.last
129.592k (± 3.4%) i/s - 652.094k
Comparison:
Enumerable#reverse_each + break: 3310776.9 i/s
Enumerable#reverse.detect: 1255082.9 i/s - 2.64x slower
Enumerable#select.last: 129592.0 i/s - 25.55x slower
- 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
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của fastruby/fast-ruby
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 52/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 32/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 42/100
Tất cả issue của fastruby/fast-ruby
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
palladius/rails8-app-on-gcp#145 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
rubocop/rubocop-rspec#2236 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
riscv/riscv-unified-db#2624 · 1 reaction ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100