Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

217
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda