Este proyecto proporciona una función de memorización para mejorar el rendimiento en proyectos de JavaScript o TypeScript al almacenar en caché los resultados de costosas llamadas a funciones. Al memorizar, las llamadas repetidas con los mismos argumentos devolverán el resultado almacenado en caché, lo que acelerará la ejecución.
Este módulo funciona como el gancho useMemo de reaccionar, pero NO requiere reacción. Puedes usar cualquier framework o proyectos de javascript puro
Paquete Npm
Github
En el siguiente proceso, cuando se llama nuevamente al método concatPhoneNumber con los mismos parámetros, la función no se ejecuta nuevamente, recupera el resultado del caché.
import memofy from "memofy"; const concatPhoneNumber = (extension, number) => { // Heavy calculation // return result }; const memoizedConcatPhoneNumber = memofy(concatPhoneNumber, []); memoizedConcatPhoneNumber(90, 555); // Runs concatPhoneNumber when first run memoizedConcatPhoneNumber(90, 555); // get value from cache memoizedConcatPhoneNumber(90, 552); // Runs concatPhoneNumber because params is change
Si desea que el método se ejecute nuevamente con el mismo parámetro según algunas dependencias, puede pasar el parámetro deps de la siguiente manera.
import memofy from "memofy"; const taxRatio = 0.5; const product = { title: "Test product", price: 10 }; const calculateTax = () => { // Calculate tax by product price // Heavy calculation return taxRatio * product.price; }; const memoizedConcatPhoneNumber = memofy(calculateTax, [product, taxRatio]); calculatedPrice = calculateTax(); // Runs concatPhoneNumber when first run product.price = 40; let calculatedPrice = calculateTax(); // Runs concatPhoneNumber because product dep changed taxRatio = 0.8; calculatedPrice = calculateTax(); // Runs concatPhoneNumber because taxRatio changed
Resultados del rendimiento de una función compleja que distingue números primos. Prueba de rendimiento
Caso | EM |
---|---|
Primera hora de ejecución (sin almacenamiento en caché) | > 52,08 ms |
Segundo tiempo de ejecución (almacenamiento en caché) | |
y ejecución posterior (almacenamiento en caché) |
Se escribieron pruebas para todos los casos y todos los tipos de parámetros. Pruebas
Archivo | % Stmts | % Rama | % Funciones | % Líneas | N.º de líneas descubiertas |
---|---|---|---|---|---|
Todos los archivos | 100 | 100 | 100 | 100 | 0 |
lib | 100 | 100 | 100 | 100 | 0 |
index.ts | 100 | 100 | 100 | 100 | 0 |
lib/tienda | 100 | 100 | 100 | 100 | 0 |
CacheStore.ts | 100 | 100 | 100 | 100 | 0 |
DepsStore.ts | 100 | 100 | 100 | 100 | 0 |
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3