Hasty Briefsbeta

双语

Fast Allocations in Ruby 3.5

a year ago
  • #Optimization
  • #Performance
  • #Ruby
  • Ruby 3.5在对象分配方面实现了显著的速度提升,最高可达六倍性能提升
  • 基准测试对比了带/不带YJIT时的位置参数和关键字参数性能,均显示持续加速效果
  • 位置参数在不使用YJIT时获得1.8倍加速,使用YJIT时达2.3倍,且与参数数量无关
  • 关键字参数随着参数增多加速效果递增:无YJIT时最高3倍,启用YJIT时超过6.5倍
  • 该优化通过内联`Class#new`方法实现,消除了堆栈帧和参数拷贝操作
  • 内联机制提高了内联缓存命中率,并避免Ruby与C调用约定间的转换开销
  • 存在微小向后兼容问题:堆栈追踪中将缺失`Class#new`帧信息
  • 内存占用因调用点指令增加略有上升,但影响轻微(指令序列大小仅增长0.5%)