ici*_*cle 4 smalltalk dynamic-dispatch
在Smalltalk中,在运行时查找的方法可能涉及大量的步骤,因为一个子类的方法字典中不包含它的超类的方法,和一个指针追逐,需要找对方法.优化将是每个子类在其方法字典中存储所有超类方法.
问题:如何做到这一点?
一个明显的缺点是空间成本,但我只是想知道如何在Smalltalk中完成这项工作?这与为最近调用的方法创建单独的缓存不同.
小智 5
缓存查找结果的方法有很多种.只需阅读一些基本的VMimplementation论文 - 从绿皮书开始.你甚至可以在网上免费找到t - http://stephane.ducasse.free.fr/FreeBooks.html并查看"Bits of History,Words of Advice"的底部.普通解释器可以使用简单的散列键控缓存.翻译虚拟机可以进入内联缓存,多态内联缓存,自适应缓存......不需要像C++ vtables一样痛苦,这几乎就是你所建议的.我们已经覆盖了几十年.它已经解决了.
归档时间: |
|
查看次数: |
162 次 |
最近记录: |