Después de leer este artículo: https://v8.dev/blog/elements-kinds . Me preguntaba si algunas de las matrices que se crean en mi código están empaquetadas o agujereadas. ¿Hay alguna forma de verificar esto en tiempo de ejecución en un entorno de navegador (específicamente Chrome)? Estoy buscando algo como %DebugPrint() que funcione en Chrome. Quizás haya otras pistas que pueda buscar. Por ejemplo, cierta información que se captura en instantáneas de montón, etc.
(Desarrollador V8 aquí.)
Hasta donde yo sé, Chrome (DevTools) no expone el "tipo de elementos" de las matrices.
Y eso probablemente esté bien, porque la diferencia de rendimiento entre los elementos "empaquetados" y "agujereados" es muy pequeña. Esencialmente, solo aparece en microbenchmarks. El beneficio típico de una matriz empaquetada es que se pueden evitar dos instrucciones de máquina que de otro modo tendrían que suceder. Si está buscando un cuerpo de bucle en caliente de una línea que compila tal vez una docena de instrucciones de máquina, entonces puede medirse guardar dos de ellas. Si está buscando una aplicación del mundo real donde cientos de kilobytes de código contribuyen al rendimiento general, guardar dos instrucciones de máquina aquí y allá no importará.
Entiendo que pueda tener curiosidad; pero en lo que respecta a las optimizaciones tangibles, hay formas mucho más impactantes de pasar su tiempo. Hablar de tipos de elementos es más o menos una historia de "para su curiosidad, estos son algunos de los extremos a los que llegan los motores JS para exprimir hasta el último bit de rendimiento de JavaScript"; no pretende ser un consejo de rendimiento importante que la mayoría de los desarrolladores deban conocer.