¿Cuál es el método más rápido para agregar un nuevo valor al comienzo de una cadena?
Anteponer texto al principio de la cadena
compañero64
Dado que la pregunta es acerca de cuál es el lo más rápido método, pensé en agregar algunas métricas de rendimiento.
TL;DR El ganador, por un amplio margen, es el +
operador, y por favor nunca use expresiones regulares
-
Ya que queremos probar anteponery no solo concatenar, actualicé las pruebas: jsperf.com/prepend-text-to-string/5
– metalim
22 de abril de 2019 a las 11:32
-
@metalim, ¿hubo algún cambio importante en el material que hiciste en las pruebas? Un prefijo es solo la mitad ordenada de la concatenación de cadenas. Además, para jsPerf, no necesita lanzar los casos de prueba en un bucle; jsPerf llama a cada método miles de veces para obtener una línea base de puntajes. Las pruebas de rendimiento optimizan escenarios particulares, y no estoy seguro de qué tan común es anteponer la misma cadena 1000 veces.
– KyleMit
♦22 de abril de 2019 a las 18:08
-
Puede haber una diferencia significativa si agrega una cadena corta a una larga o una cadena larga a una corta. Ya que estamos interesados en anteponiendo cadena corta a cadena arbitraria, eso es lo que se hace en las pruebas: anteponer cadena corta a cadena más larga creciente. Los bucles están ahí para probar 1000 longitudes diferentes de la cadena de sufijos, para evitar probar solo cortos o largos. @KyleMit, si tiene una mejor idea, siéntase libre de implementarla en la próxima iteración de prueba.
– metalim
23 de abril de 2019 a las 8:38
-
Estoy tentado a votar esto por la tira xkcd. ¡Buena cosa! Su solución elegante probablemente sea más lenta porque instancia el procesador de expresiones regulares.
– Rolf
10 de noviembre de 2017 a las 0:40
-
@Rolf probablemente no. Está ciertamente más lento que el
prestring + 'original string';
solución.– Gabriele Petrioli
10 de noviembre de 2017 a las 7:17
-
@GabrielePetrioli La ventaja es que solo puede agregar a su cadena de puntos (tubería). Incluso puede agregar algo, como mystr.replace (/$/,’ por Gabriele’). Puede que sea más lento, pero es exactamente lo que estaba buscando.
– Mateja Petrovic
9 de agosto de 2018 a las 0:23
-
Quizás este debería ser el nuevo estándar: cada publicación también debe incluir XKCD relevante.
– HaulinOats
12/09/2018 a las 20:33
-
por alguna razón, pensé que la computadora en el escritorio era en realidad un bebé en un moisés, y también pensé que era extraño que el tipo golpeara al bebé.
– thedanotto
29 de marzo de 2019 a las 20:08
Ilan Schemoul
Si desea usar la versión de Javascript llamada ES 2015 (también conocido como ES6) o posterior, puede usar cadenas de plantilla introducido por ES 2015 y recomendado por algunas pautas (como Guía de estilo de Airbnb):
const after = "test";
const mystr = `This is: ${after}`;
Griffi
ES6:
let after="something after";
let text = `before text ${after}`;
hjpotter92
también podrías hacerlo de esta manera
"".concat("x","y")
-
y por qué no “x”.concat(“y”)? ¿Solo para agregar otra instanciación de cadena y hacerlo más lento?
– metalim
22 de abril de 2019 a las 11:31