gpt4 book ai didi

language-agnostic - 动态调度实现

转载 作者:行者123 更新时间:2023-12-01 01:29:04 25 4
gpt4 key购买 nike

我目前正在寻找实现动态调度的各种方法。

据我所知,有两种“简单”的方法可以实现这一点:

  • 虚函数表,如 C++
  • Message Dispatcher,就像在 SmallTalk 中一样(这有点类似于 Python 将方法存储为 __dict__ 中的属性的想法)

  • 我会注意到,据我所知,选择 VFT 是因为它们执行合理且易于实现(也因为它们非常适合 C++ 单独编译模型),而不是因为它们是可能的最快方法。

    我已经阅读了几篇文章和出版物,但是大多数都是“旧的”(我读到的最后一篇文章(*)提到了使用 Pentium 200MHz ...嗯),所以我怀疑它们是否代表了最先进的技术除非研究陷入僵局。

    我对感兴趣:
  • 动态调度策略,如果它们支持多方法就更好了。
  • 各种策略的基准

  • 我对最近的文章和不寻常的策略特别感兴趣(即使它们没有被证明是有效的)。

    欢迎发表,如果它们可以免费获得会更好,否则对所呈现的技术和结果进行总结会很棒。

    也欢迎真正编译器实现的技术文章。

    (*) This article about Eiffel说明了整个程序分析如何帮助删除虚拟调用站点。

    最佳答案

    在阅读有关基于原型(prototype)的对象系统的实现时,我遇到了以下多方法策略。它是在考虑该领域的情况下编写的,但适应更传统的基于类的语言并不难。

    第 3 节详细介绍了它,图 5 是一个有用的图表。这个想法是每个可以调度的对象(或类,也许)都有自己的方法表。 (从这个意义上说,它与 C++ 相当。)在该对象(或类)上调度的每个方法都放入表中。聪明的部分是表格被分成小节,对应于参数位置。

    澄清一下:假设您有一个专门针对第一个参数的类“Foo”和第二个参数的类“Quux”的方法。 Foo 类的调度表的第 1 节将包含一个指向该方法的指针。而且,类 Quux 的调度表的第二部分也将有一个指向该方法的指针。然后,要进行分派(dispatch),请查阅参数类的分派(dispatch)表。如果方法指针匹配(如我们的示例中),那就是要调用的方法。

    这篇论文被称为“Prototypes with Multiple Dispatch”。
    http://lee.fov120.com/ecoop.pdf

    关于language-agnostic - 动态调度实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5947134/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com