string/concatenation.rb tests are misleading
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 45/100
- Issue-Typ
- Refactoring
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- ruby
- Bereich
- performance, testing
Rechercherichtung
Beginne in string/concatenation.rb und untersuche, wie die aktuellen Benchmarks die schnelle Methode definieren und Verkettungsmethoden vergleichen. Verwende das benchmark-ips-Beispiel aus dem Issue als Referenz und benutze Laufzeitvariablen für den Vergleich; abgeschlossen ist die Arbeit, wenn der Benchmark die zur Parserzeit ausgeführte Verkettung nicht mehr als Laufzeitoperation behandelt und die genannten Alternativen fair vergleicht.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Hi, the tests in string/concatenation.rb are quite misleading.
The fast method consists of this
def fast
'foo' 'bar'
end
That's not concatenating during calling of fast but on parsing the code. If you write another method just returning foobar, it is as fast as this method.
So I think this is not fair comparison and what you usually want is to concatenate two variables during runtime.
For this use case concat and << are calling the same code, so they have the same performance and both are fine if you want to change the string on the left and not just get two strings concatenated. If you want a new string you can use +.
Some better test could be to compare + and String interpolation
Benchmark.ips do |x|
foo = 'foo'
bar = 'bar'
x.report('String#+') do
foo + bar
end
x.report('String interpolation') do
"#{foo}#{bar}"
end
x.compare!
end
This still has the difference that interpolation can handle nil values, while + cannot.
- Vorherrschende Sprache
- Ruby
- Sterne
- 5.7k
- Forks
- 370
- Ø Merge
- 4 Std. 42 Min.
- Gemergte PRs (30 T.)
- 13
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus fastruby/fast-ruby
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 52/100
fastruby/fast-ruby#230 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 45/100
fastruby/fast-ruby#220 · 6 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 42/100
fastruby/fast-ruby#208 · 7 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
[FEATURE REQUEST] Use the project's WIKI to share results for each Ruby version with latest CI resultsEvtl. vergeben @JuanVqz hat das vor 3 Tagen übernommen. Offen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
fastruby/fast-ruby#206 · 4 Kommentare · 1 Reaktion · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in fastruby/fast-ruby
Ähnliche Issues
-
security
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
ds-drift
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
we-promise/sure#3934 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 7 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
simp/pupmod-simp-ssh#246 ·