No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Complejidad espacial en práctica

8/18
Recursos

Aportes 8

Preguntas 0

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

¿Cómo medimos un recurso?

  • ⌚ En Complejidad Temporal podemos usar funciones como performance.now y console.time para medir el tiempo en que se ejecuta un algoritmo.

  • 🌌 En Complejidad Espacial es diferente. Cada compilador asigna un espacio distinto de memoria para almacenar números o palabras.


📦 La diversidad de tamaños y formas con las que el compilador almacena información es interesante, pero para el propósito que tenemos, podemos simplificarlo a contar cuántas variables se definen para almacenar arreglos, números o cadenas.

Creo que hay un detalle en el código mostrado en esta clase.
Ya que en la función repetir, lo que hacemos es crear una nueva variable que es igual a el array que se le paso como parámetro. Básicamente esto:

function repetir(arr){
  let newArray = arr;
  return newArray;
}

Sin embargo, creo que en este caso newArray solo estaría apuntando al espacio en memoria de arr, por lo que aquí no se estaría realmente haciendo otro array.
.
Creo que JS hace esto con funciones y con arrays. En casos donde hay arrays anidados, tendríamos que aplicar una funciona recursiva, aplicando DeepCopy para poder hacer un arreglo u objeto nueva, pero en este caso, creo que para realmente crear un nuevo array, podemos aplicar el spread operator:

function repetir(arr){
  const newArray = [...arr]
  return newArray;
}

En la complejidad Espacial vamos contando las variables que se van creando y que tipos de variables son las que se están creando.

Buenas! en versión app, cada vez que abro unas lección se abre primero la configuración de segundo plano. Es muy recurrente, seria genial si pudieran solucionarlo. gracias!!!

Has estado geniales las clases c:

Gracias

Práctica Complejidad Espacial

Cada compilador asigna un espacio distinto de memoria para almacenar números o palabras.

La diversidad de tamaños y formas con las que el compilador almacena información es interesante, pero para el propósito que tenemos, podemos simplificarlo a contar cuántas variables se definen para almacenar arreglos, números o cadenas.

Código de la clase con un par de ejemplos para correr en la terminal de comandos:

function counter(length) {
    for(let i = 0; i < length; i++) {
        console.log(i);
    }
}

function arrayConverter(arr) {
    return arr.map( el => el.toString());
}

function array2DConverter(value) {
    let newArr2D = new Array(value);
    for(let i = 0; i < value; i++) {
        newArr2D[i] = new Array(value).fill(value);
    }
    return newArr2D;
}

// See through console.log the auxiliar space used by arrayConverter(value) function
console.log(arrayConverter([2, 3, 4]));

// See how a big auxiliar space afects the time performance
let start = performance.now();
console.log(array2DConverter(20000));
let elapsed = (performance.now() - start);
console.log("Elapsed Time: " + elapsed.toFixed(2) + " miliseconds");

Lo que se puede ver en el ejemplo del array2DConverter(20000) es cómo se ve afectada también la performance en tiempo además de espacio, es decir se incrementa notoriamente la complejidad espacio tiempo (o como se llame).
En mi laptop el resultado fue de 6.5 segundos promedio.