[V8] Object shapes & Hidden classes

  • When you create a object, in V8, it creates a hidden class to repesent the object shape.
  • Two different objects with same object shape might share the same hidden class
  • Any difference in object (prop order, more or less props) will result two different hidden class
  • Keep a low number of hidden class can help with V8 performance.

 

Ideas:

  1. Always using factory function to create object. so that can keep the object shape the same everytime.
  2. Don't split object creation into multi steps, it will force V8 to create another hidden class
  3. Define all the possible props for object in one go, mark some props as undefined and change value later
  4. In Typescript, for an object {name: string, company?: string} or {name: string, company: string | undefined }, which one to choose?
    • In most case they are the same
    • But consider hidden class {name: string, company: string | undefined }will be prefer approach
    • {name: string, company: string | undefined }: means that company should be there, but can be undefined
    • {name: string, company?: string}: means that company may not exist at all
    • Different means might results a difference in V8 preformance in the end.
posted @   Zhentiw  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2022-11-08 [Typescript] 90. Medium - Replace
2022-11-08 [Typescript] 89. Hard - Currying 1
2022-11-08 [Typescript] 88. Hard - Simple Vue
2022-11-08 [Typescript] ThisType
2020-11-08 [Kotlin] Mapping between two entities
2018-11-08 [Node.js] Trigger a File Download in Express
2018-11-08 [WASM Rust] Create and Publish a NPM Package Containing Rust Generated WebAssembly using wasm-pack
点击右上角即可分享
微信分享提示