Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

379
Vistas
(¿Por qué?) ¿Lodash es lento?

Me sorprendieron los resultados descritos en esta respuesta y respaldados por este punto de referencia que compara esa solución (JavaScript nativo) con la que propuse (Lodash) .

También he comparado la solución propuesta:

 const obj = { name: undefined, age: 15, school: 'Some school' } const hasOnly = (obj,props) => { var objProps = Object.keys(obj) return objProps.length == props.length && props.every(p => objProps.includes(p)) } console.log(hasOnly(obj,['name','age'])) //return false console.log(hasOnly(obj,['name','age','city'])) //return false console.log(hasOnly(obj,['name','age','school'])) //return true

con uno en el que realmente simplemente cambio de cada función nativa a la función correspondiente en Lodash,

 hasOnly = (obj,props) => { const objProps = _.keys(obj) return _.size(objProps) == _.size(props) && _.every(_.includes(objProps), props); }

y el resultado sigue siendo decepcionante a favor de la solución nativa .

Ahora, el de arriba puede ser un ejemplo tonto, pero aun así... > ¿90% más lento? Entonces, ¿para qué estoy usando Lodash? Quiero decir, en diferentes escenarios puede mejorar la legibilidad, especialmente cuando las funciones tienen que ser parcialmente aplicadas y pasadas, donde Lodash te ahorra mucho x => x. (ejemplo clásico arrayOfarrays.map(_.map(fOnTheElements)) en lugar de arrayOfarrays.map(arr => arr.map(fOnTheElements)) ), pero si el rendimiento es tan bajo, entonces es un poco difícil hacer que la expresividad sea suficiente para elegir Lodash sobre el código nativo.

Soy nuevo en JavaScript y Lodash (pero no totalmente nuevo en programación funcional), por lo que ni siquiera conozco la confiabilidad de la herramienta de referencia que se usó en la respuesta vinculada, pero no puedo creer que sea tan malo. trabajo que invierte el resultado.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Lodash es solo javascript. No hay magia que pueda hacerlo más rápido que el código nativo en el que está escrito.

En resumen, cada llamada de método tiene una sobrecarga. entonces si lo hago

 const len = myArr.length

y lo hace

 const len = _.size(myArr);

y asumimos que la implementación de _.size es

 function size(arr){ return arr.length }

(Hace más que eso, ¡pero quédese conmigo aquí!) Entonces, al menos, tiene una llamada de método adicional que la solución nativa no tiene.

De hecho, _.size hace incluso más que solo verificar la longitud

Obtiene el tamaño de la colección devolviendo su longitud para valores similares a una matriz o el número de propiedades con clave de cadena enumerables propias para los objetos.

Entonces, además de una llamada de método adicional, tiene el código para verificar el "número de propiedades enumerables con clave de cadena". ¿Realmente es de extrañar que una solución nativa sea más rápida?


Entonces, ¿por qué usar una biblioteca como lodash? Porque como su documentación titula:

Lodash facilita JavaScript al eliminar la molestia de trabajar con matrices, números, objetos, cadenas, etc.

Por lo tanto, sacrifica un poco de velocidad por legibilidad y facilidad de uso.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda