reverse.detect vs select { ... }.last
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- À clarifier
- Activité
- À l'abandon
- Stack technique
- ruby
- Domaine
- performance
Piste de recherche
Commencez par exécuter le benchmark reverse.rb fourni avec benchmark-ips et comparez les trois approches présentées. L’issue ne nomme aucun fichier du dépôt et ne précise pas la troisième approche proposée ; la tâche ne serait terminée qu’après avoir identifié et documenté une alternative concrète avec des résultats de benchmark.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- Ruby
- Étoiles
- 5.7k
- Forks
- 370
- Merge moyen
- 4 h 42 min
- PR mergées (30 j)
- 13
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de fastruby/fast-ruby
-
Difficulté 2/5 1-3 heures Accessibilité débutants 52/100
fastruby/fast-ruby#230 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 45/100
fastruby/fast-ruby#220 · 6 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
fastruby/fast-ruby#208 · 7 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
[FEATURE REQUEST] Use the project's WIKI to share results for each Ruby version with latest CI resultsPeut-être pris @JuanVqz l’a pris il y a 3 jours. Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
fastruby/fast-ruby#206 · 4 commentaires · 1 réaction · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de fastruby/fast-ruby
Issues similaires
-
security
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
ds-drift
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
we-promise/sure#3934 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 7 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
simp/pupmod-simp-ssh#246 ·