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

208
Vistas
Destrucción, argumentos polimórficos y cachés en línea

Al operar en objetos, uno puede tener acceso a la propiedad ya sea en:

  • sitio de llamada: const f = (x, y) => x + y; , f(ox, oy) .
  • dentro de la función: const f = o => ox + oy; , f(o); (o similarmente, const f = ({ x, y }) => x + y; , f(o); ).

Desde mi ingenuo entendimiento, el primero probablemente usa los cachés en línea del sitio de llamada, mientras que el último toma los de la función en sí. En un escenario, donde f se llama con todo tipo de objetos, siempre que tengan las propiedades x e y , esto en mi opinión podría conducir a un escenario megamórfico para este último, que ya no utiliza cachés en línea.


Algunas renuncias generales aquí:

  • Preocuparse por esto es casi siempre una optimización prematura. Estoy interesado en obtener una mejor comprensión de cómo funcionan las cosas en general.
  • Otras optimizaciones que hace el compilador, por ejemplo, incluir f en el sitio de llamada, probablemente hacen que esto sea irrelevante en casos típicos.
  • Si bien trato de leer parte de la salida del ensamblador, mi capacidad para comprenderlo aún es bastante limitada. Varios lugares son "y luego sucede algo que no entiendo".

Con mi conocimiento actual, para parámetros desestructurados, parece que V8 podría potencialmente cambiar al primer caso, reemplazando todas las llamadas con los accesos de propiedad, seguido de una llamada a una función modificada que toma los valores directamente. Esto se debe principalmente a que, en primer lugar, el cuerpo de la función nunca tiene acceso al objeto en sí. En cierto modo, siempre se prefiere una "incrustación ligera", aunque tal vez completamente incrustada. Esto no parece estar hecho, pero no puedo asegurarlo.


¿Hay algo defectuoso en mi comprensión, la función en línea realmente resuelve esto casi por completo, o hay casos problemáticos? ¿Hay algún artículo que deba leer para fortalecer mi comprensión?

about 4 years ago · Juan Pablo Isaza
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