我将使用信号和槽将数据向上/向下传递一个 5-10 层对象。这应该会导致每秒几千个信号。这是“我点击了一个按钮”的形式。我所有的对象也会在大约每 100 毫秒的计时器上向他们发出自我信号,以便他们可以进行一些处理。
什么是最快的 C++ Signal/Slot 实现,它很小并且不需要其他库,例如 boost。(我需要保持二进制文件的总大小非常小)。
我见过 libSigC++、sigSlot、Cpp-Events、
我将使用信号和槽将数据向上/向下传递一个 5-10 层对象。这应该会导致每秒几千个信号。这是“我点击了一个按钮”的形式。我所有的对象也会在大约每 100 毫秒的计时器上向他们发出自我信号,以便他们可以进行一些处理。
什么是最快的 C++ Signal/Slot 实现,它很小并且不需要其他库,例如 boost。(我需要保持二进制文件的总大小非常小)。
我见过 libSigC++、sigSlot、Cpp-Events、
pbhogan 的 Signals 怎么样:
https://github.com/pbhogan/Signals
它超级快(使用 Don Clugston 编写的FastDelegate代码 - Ismael 也提到过),而且非常易于使用。我已经使用了一段时间了,没有任何问题。
通常,信号库的设计目的是易于使用,而不是考虑到性能。在追求快速执行时,您可以查看这篇文章可能会有所帮助。
在您的情况下,我将开始尝试更简单的方法,例如 sigslot。但是在这种情况下我不会使用信号库......可能是某种消息队列,带有某种时间戳。
即使是最复杂和功能丰富的信号/槽库也是相当轻量级的。在大多数情况下,信号发出的速度与虚函数调用相当。对于诸如 boost::signals 和 libsigc++ 之类的模板驱动库,您将获得与传递函数指针基本相同的性能。