es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué el método split() es aproximadamente 2 veces más lento cuando el resultado se guarda en un array?

Considere el siguiente fragmento de código:

function split() {
  let time = 0;
  let result = [];
  for (let i = 0; i < 10 * 1000 * 1000; i++) {
    let start = performance.now();
    let words = "foo bar baz".split(" ");
    let end = performance.now();
    time += (end - start);
    // result.push(words);
  }
  console.log(`Tiempo necesario: ${time}ms`);
}

La salida de este código es algo como:

Tiempo necesario: 2664ms

Sin embargo, con la línea // result.push(words); descomentada, la salida es algo como:

Tiempo necesario: 4991ms

Eso es aproximadamente 2 veces más lento (ten en cuenta que estoy midiendo solo el tiempo necesario por split(), pero no por push()). ¿Alguien puede explicarme por qué?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Cuando la línea // result.push(words); está comentada, la función split() solo realiza una operación: dividir la cadena “foo bar baz” en un arreglo de tres palabras. Esta operación se repite 10 millones de veces, y el tiempo necesario para realizar esta operación en cada iteración se mide utilizando la API performance.

    Cuando la línea // result.push(words); no está comentada, la función split() no solo divide la cadena “foo bar baz” en un arreglo, sino que también empuja el arreglo resultante hacia un nuevo arreglo llamado result. El tiempo necesario para empujar el arreglo a result no se mide mediante la API performance, pero no es insignificante, especialmente cuando se realiza 10 millones de veces.

    Por lo tanto, al descomentar la línea // result.push(words);, la función split() se vuelve más lenta aproximadamente al doble, ya que el tiempo necesario para empujar arreglos hacia result se suma al tiempo necesario para dividir la cadena inicial.

Comments are closed.