[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:
- Always using factory function to create object. so that can keep the object shape the same everytime.
- Don't split object creation into multi steps, it will force V8 to create another hidden class
- Define all the possible props for object in one go, mark some props as undefined and change value later
- 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.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源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