Contenido del curso
Contenido del curso
Cristobal Peña
Andres Trujillo
Andres Ramirez Restrepo
jorge llanque
Tatiana Karina Valencia Hernández
Ginnio Sarabia
Martin Paez
yerson lasso
María Sierra
Andrés Felipe Lopez gomez
Andres Trujillo
Jorge Dueñas
Markoz Peña Mendez
Camilo Alexander Velandia Velandia
Francisco Garcia [C6]
Carlos Enrique Ramírez Flores
Luis Miguel Gonón Xiap
Johan Echeverri
Maria Elizabeth Minero Alvarenga
Alejandro Ruiz Melo
Diego Josue Rosa Pacheco
Ivan Cardozo
Esteban Santiago Pizzani
Abigail Perez
Jesús Miguel Quinto Teran
Anfernee Valera
Jesús Velázquez Jiménez
Benchmark = prueba de rendimiento o comparativa en inglés
ty!
La función console.time('nombre') inicia un temporizador que se puede usar para rastrear cuánto tiempo dura una operación. El temporizador sera identificado por el nombre dado a la consola. Ese mismo nombre se utilizara cuando se llame a console.timeEnd('nombre') para detener el temporizador y obtener el tiempo demorado durante el proceso.
console.time("Temporizador"); for (var i = 0; i < 10000; i++) { // Nuestro codigo entre los temporizadores puede ser cualquier cosa. } console.timeEnd("Temporizador");
buena explicación
Buen aporte, gracias!
¿Qué es más rápido?
Suma++
Suma = Suma + i
let suma = 0; let suma2 = 0; console.time('Tiempo bucle'); for (let i = 0; i < 1000; i++) { suma++; } console.timeEnd('Tiempo bucle') console.time('Tiempo bucle 2'); for (let j = 0; j < 1000; j++) { suma2 = suma2 + j; } console.timeEnd('Tiempo bucle 2')```
Respuesta:
Tiempo bucle: 0.268ms Tiempo bucle 2: 0.055ms
Jamas lo hubiera imaginado. Algo tan sencillo, como la pura sintaxis, cambia completamente el rendimiento. Grax por el dato.
Dependiendo del proyecto que estés realizando, yo recomendaría sobreponer legibilidad sobre velocidad
Benchmarking (console time y timeEnd)
Aquí vamos a ver cómo hacer para descubrir de todas tus funciones cuando tienes un proceso largo, cuánto esta tardando en ejecutarse y poder detectar procesos que están tardándose más de lo que deberían.
let suma = 0 console.time('bucle') for (let i = 0; i < 1000000000; i++) { suma += 1 } console.timeEnd('bucle')
console.time(*nombre*) → Nos encerrar un bloque de código y después evaluar cuánto tarda en ejecutarse.Y también puedes trabajar esto con procesos asíncronos.
console.time('bucle async') console.log('Empieza el proceso asincrono') asincrona() .then(() => console.timeEnd('bucle async')) function asincrona() { return new Promise( resolve => { setTimeout( () => { console.log('Terimina el proceso asíncrono') resolve() }, 0) }) }
muchas gracias por el aporte
ty!
¡Que buen truco!
Bastante aplicable para revisar el tiempo que tarda en peticiones http
Mi forma de hacerlo : P
es genial, aunque hay que tener en cuenta que va depender de la maquina donde corras el codigo
console.time('todo'); let suma = 0; console.time('bucle1'); for (let i = 0; i < 1000000000; i++) { suma++; } console.timeEnd('bucle1'); let suma2 = 0; console.time('bucle2'); for (let i = 0; i < 10000000000; i++) { suma2++; } console.timeEnd('bucle2'); console.time('asincrona'); console.log('inicia asincrono'); asincrona() .then ( () => { console.timeEnd('asincrona'); }) console.timeEnd('todo'); //------------------- function asincrona() { return new Promise ( (resolve) => { setTimeout(() => { console.log('Termina el proceso asincrono'); resolve(); }, 1000); }) }
This is my códe!!
console.time('all'); let suma = 600000; console.time('bucle'); for (let i = 0; i < suma; i++) { // console.log(i) } console.log(suma) console.timeEnd('bucle'); console.time('bucle2'); let suma2 =suma*2; console.log(suma2) for (let x = 0; x < suma2; x++) { // console.log(x) } console.timeEnd('bucle2'); console.log('async'); asincrona() .then( () => { console.timeEnd('async'); }) console.timeEnd('all'); function asincrona(){ return new Promise( (resolve, reject) =>{ setTimeout(() => { console.log('Termina el proceso asincrono'); resolve(); }) }) }```
Console.time es una buena herramienta para medir el tiempo de ejecución de nuestro código, pero cabe resaltar que este tiempo es relativo, la velocidad de la cpu, los procesos que pueda estar corriendo entre otros, en el Curso Básico de Algoritmos, más especifico a la clase de Cómo comparar algoritmos y ritmo de crecimiento se puede adentran mas en el rendimiento de nuestro código.
/* Se puede ejecutar un proceso que pronostique cuanto debe tardarce en ejecutar algo y asi identificar donde hay fallas para corregir y hacer que todo ejecute mas rapido */ /* console.time('todo'); let suma = 0; console.time('bucle'); for (let i = 0; i < 100000000; i++) { suma +=1; } console.log(suma); console.timeEnd('bucle'); let suma2 = 0; console.time('bucle2'); for (let j = 0; j < 1000000000; j++) { suma2 +=1; } console.log(suma2); console.timeEnd('bucle2'); console.timeEnd('todo'); */ /* con las funciones asincronas funciona asi */ console.time('todo'); let suma = 0; console.time('bucle'); for (let i = 0; i < 100000000; i++) { suma +=1; } console.log(suma); console.timeEnd('bucle'); let suma2 = 0; console.time('bucle2'); for (let j = 0; j < 1000000000; j++) { suma2 +=1; } console.log(suma2); console.timeEnd('bucle2'); console.time('asincrono'); asincrona() .then(() => { console.timeEnd('asincrono'); }); console.timeEnd('todo'); function asincrona() { return new Promise((resolve) => { setTimeout(function () { console.log('Termina el proceso asincrono') resolve(); },5000) }) } /* Así podemos entender cuando tarda un codigo en ejecutarce esto se conoce como benchmarking */
Console.time es una buena herramienta para medir el tiempo de ejecución de nuestro código, pero cabe resaltar que este tiempo es relativo
Otro truco, usar exponente a los para los nùmeros:
1.000'000.000 === 1e9
let suma = 0; console.time("bucle"); for (let i = 0; i < 1e9; i++) { suma += 1; } console.timeEnd("bucle");
A la hora de crear el otro ciclo for, no era necesario cambiar la variable "i" a "j", porque usó let para declarar la variable, es decir, la variable está en un scope local. Seguro que la mayoría es consciente de esto, pero lo menciono por si alguien no lo había comprendido completamente.
El mejor profesor de Node del mundo.
Que bueno poder saber cuánto le estás exigiendo a tu máquina a la hora de ejecutar un proceso. Estos datos siempre me dan ganas de saber en qué parte o cómo puedo mejorar el código para hacerlo más rápido.
console.time('nombre_proceso') //tu codigo...
console.timeEnd('nombre_proceso') Sirve para obtener el tiempo que tarda que en ejecutarse el codigo que esta entre las consolas time
Tambien tenemos disponible console.timeLog, para poder observar el cambio de una variable... https://developer.mozilla.org/en-US/docs/Web/API/Console/timeLog
Estos pequeños trucos hacen la diferencia a la hora de debuggear
Lo he hecho con console.time & console.timeLog
console.time(`All code`); console.time(`process`) let sum = 0; for(i = 0; i < 10; i++ ){ sum += 1; } console.timeLog(`process`, sum); /* Asincrono */ console.log("Aquí comienza asíncrono"); function startup() { return new Promise( (resolve, reject)=>{ setTimeout(() => { console.log("Petición 1") resolve(); }, 4000); } ); } console.time(`startup`); startup() .then(res => console.timeLog(`startup`)) .catch(err => console.timeLog(`startup`)) console.timeEnd(`All code`)