Ruby 中的方法查找、常量查找与模块操作详解
1. 内联方法缓存
Ruby 为了进一步加速方法查找,使用了一种名为内联方法缓存(Inline Method Cache)的机制。这种缓存会将信息与 Ruby 执行的编译后的 YARV 指令一同保存。
例如,对于代码 10.times do... end ,其对应的编译后的 YARV 指令如下:
putobject 10
send <callinfo!mid:times, argc:0,
block:block in <compiled>>
Integer#times
这里, putobject 10 会将 Fixnum 对象 10 压入 YARV 的内部栈,它是 times 方法调用的接收者。接着, send 指令会调用 times 方法。
内联缓存能让 Ruby 直接在 YARV 指令中保存 times 方法调用与 Integer#times 实现之间的映射。如下所示:
putobject 10
send
Integer#times
Integer#times
当 Ruby 再次执行这行代码时,它可以直接执行
超级会员免费看
订阅专栏 解锁全文
11

被折叠的 条评论
为什么被折叠?



