Was ist die schnellste Methode, um einen neuen Wert am Anfang einer Zeichenfolge hinzuzufügen?
Text dem Anfang der Zeichenfolge voranstellen
Kumpel64
Da geht es um die Frage, was ist das am schnellsten Methode, dachte ich, ich würde einige Leistungsmetriken hinzufügen.
TL;DR Der Gewinner ist mit großem Abstand der +
Betreiber und bitte Verwenden Sie niemals Regex
-
Da wollen wir testen voranstellenund nicht nur verketten, ich habe die Tests aktualisiert: jsperf.com/prepend-text-to-string/5
– metalim
22. April 2019 um 11:32 Uhr
-
@metalim, gab es wesentliche Änderungen, die Sie an den Tests vorgenommen haben? Ein Präpend ist nur die geordnete Hälfte der Zeichenfolgenverkettung. Außerdem müssen Sie für jsPerf die Testfälle nicht in eine Schleife werfen; jsPerf ruft jede Methode tausende Male auf, um eine Grundlinie von Bewertungen zu erhalten. Leistungstests optimieren bestimmte Szenarien, und ich bin mir nicht sicher, wie häufig dieselbe Zeichenfolge 1.000 Mal vorangestellt wird.
– KyleMit
♦22. April 2019 um 18:08 Uhr
-
Es kann einen erheblichen Unterschied geben, ob Sie eine kurze Zeichenfolge an eine lange oder eine lange Zeichenfolge an eine kurze anhängen. Da es uns interessiert vorangestellt kurze Zeichenfolge zu beliebiger Zeichenfolge, das wird in Tests gemacht: kurze Zeichenfolge einer zunehmenden längeren Zeichenfolge voranstellen. Schleifen sind da, um 1000 verschiedene Längen der Suffix-Zeichenfolge zu testen, um zu vermeiden, dass nur kurz oder nur lang getestet wird. @KyleMit, wenn Sie eine bessere Idee haben, können Sie sie gerne in der nächsten Testiteration implementieren.
– metalim
23. April 2019 um 8:38 Uhr
-
Ich bin versucht, dies für den xkcd-Streifen zu verbessern. Tolles Zeug! Ihre elegante Lösung ist höchstwahrscheinlich langsamer, weil sie den Prozessor für reguläre Ausdrücke instanziiert.
– Rolf
10. November 2017 um 0:40 Uhr
-
@ Rolf höchstwahrscheinlich nicht. es ist sicherlich langsamer als die
prestring + 'original string';
Lösung.– Gabriele Petrioli
10. November 2017 um 7:17 Uhr
-
@GabrielePetrioli Der Vorteil ist, dass Sie einfach zu Ihrer Punktkette (Pipeline) hinzufügen können. Sie können sogar etwas anhängen, wie zum Beispiel mystr.replace (/$/,’ by Gabriele’). Es könnte langsamer sein, aber es ist genau das, wonach ich gesucht habe.
– Mateja Petrovic
9. August 2018 um 0:23 Uhr
-
Vielleicht sollte dies der neue Standard sein: Jeder Beitrag muss auch relevante XKCD enthalten.
– HaulinHafer
12. September 2018 um 20:33 Uhr
-
Aus irgendeinem Grund dachte ich, dass der Computer auf dem Schreibtisch eigentlich ein Baby in einer Wiege war, und fand es auch seltsam, dass der Typ das Baby schlug.
– thedanotto
29. März 2019 um 20:08 Uhr
Ilan Schemaul
Wenn Sie die Version von Javascript namens ES 2015 (alias ES6) oder höher verwenden möchten, können Sie verwenden Vorlagenzeichenfolgen eingeführt von ES 2015 und empfohlen von einigen Leitlinien (wie z Styleguide von Airbnb):
const after = "test";
const mystr = `This is: ${after}`;
Griffi
ES6:
let after="something after";
let text = `before text ${after}`;
hjpotter92
das könntest du auch so machen
"".concat("x","y")
-
und warum nicht “x”.concat(“y”)? Nur um eine weitere String-Instanziierung hinzuzufügen und sie langsamer zu machen?
– metalim
22. April 2019 um 11:31 Uhr