world validar validacion script hello formularios formulario enviar ejemplos con codigo antes javascript benchmarking

validar - ¿Cómo puedo comparar el código de JavaScript?



validar formulario javascript html5 (8)

¿Hay algún paquete que me ayude a comparar el código JavaScript? No me refiero a Firebug y esas herramientas.

Necesito comparar 2 funciones de JavaScript diferentes que he implementado. Estoy muy familiarizado con el módulo Perl''s Benchmark ( Benchmark.pm ) y estoy buscando algo similar en JavaScript.

¿El énfasis en la evaluación comparativa del código JavaScript se ha ido por la borda? ¿Puedo salirse con la sincronización de una sola ejecución de las funciones?


Es realmente difícil escribir puntos de referencia entre navegadores decentes. Simplemente sincronizar un número predefinido de iteraciones de su código no es a prueba de balas .

Como @broofa ya sugirió, revisa jsPerf . Utiliza Benchmark.js detrás de las escenas.


He estado usando esta sencilla implementación de la respuesta @musicfreaks. No hay características, pero es realmente fácil de usar. Este bench(function(){return 1/2;}, 10000, [], this) calculará 1/2 10.000 veces.

/** * Figure out how long it takes for a method to execute. * * @param {Function} method to test * @param {number} iterations number of executions. * @param {Array} args to pass in. * @param {T} context the context to call the method in. * @return {number} the time it took, in milliseconds to execute. */ var bench = function (method, iterations, args, context) { var time = 0; var timer = function (action) { var d = Date.now(); if (time < 1 || action === ''start'') { time = d; return 0; } else if (action === ''stop'') { var t = d - time; time = 0; return t; } else { return d - time; } }; var result = []; var i = 0; timer(''start''); while (i < iterations) { result.push(method.apply(context, args)); i++; } var execTime = timer(''stop''); if ( typeof console === "object") { console.log("Mean execution time was: ", execTime / iterations); console.log("Sum execution time was: ", execTime); console.log("Result of the method call was:", result[0]); } return execTime; };


Si necesita algo simple, puede hacer esto:

''use strict'' console.clear() const powerOf = x => y => Math.pow(x, y) const powerOfThree = powerOf(3) function performanceCalc(fn, ...params) { const start = +new Date() const result = fn(...params) const end = +new Date() console.log(`Result: ${result}. Execution Time: ${end - start} ms`) } performanceCalc(powerOfThree, 2)

Aquí hay un ejemplo del código


Solo agregue un temporizador rápido a la mezcla, que alguien puede encontrarle útil:

var timer = function(name) { var start = new Date(); return { stop: function() { var end = new Date(); var time = end.getTime() - start.getTime(); console.log(''Timer:'', name, ''finished in'', time, ''ms''); } } };

Idealmente se colocaría en una clase, y no se usaría como global como lo hice, por ejemplo, con los propósitos anteriores. Usarlo sería bastante simple:

var t = timer(''Some label''); // code to benchmark t.stop(); // prints the time elapsed to the js console


Solo manera simple.

console.time(''test''); console.timeEnd(''test'');



jsPerf es el sitio de jsPerf para probar el rendimiento de JS. Comience allí. Si necesita un marco para ejecutar sus propias pruebas desde la línea de comandos o las secuencias de comandos, use Benchmark.js , la biblioteca sobre la cual se construye jsperf.com.

Nota: Cualquiera que pruebe el código Javascript debe informarse sobre las trampas de las "microbenchmarks" (pruebas pequeñas que se enfocan en una función u operación específica, en lugar de pruebas más complejas basadas en patrones de código del mundo real). Dichas pruebas pueden ser útiles, pero son propensas a la inexactitud debido a la forma en que operan los tiempos de ejecución modernos de JS. La presentación de Vyacheslav Egorov sobre rendimiento y evaluación comparativa vale la pena observar para tener una idea de la naturaleza del problema (s).

Editar: eliminé las referencias a mi trabajo de JSLitmus porque ya no es relevante o útil.


Simplemente cronometra varias iteraciones de cada función. Una iteración probablemente no sea suficiente, pero (dependiendo de qué tan complejas sean sus funciones), en algún lugar cercano a 100 o incluso 1,000 iteraciones deberían hacer el trabajo.

Firebug también tiene un profiler si quieres ver qué partes de tu función están ralentizándolo.

Editar: para futuros lectores, la siguiente respuesta recomendando JSPerf debería ser la respuesta correcta. Eliminaría el mío, pero no puedo porque ha sido seleccionado por el OP. El benchmarking tiene mucho más que simplemente ejecutar muchas iteraciones, y JSPerf se ocupa de eso por usted.