11

我将使用信号和槽将数据向上/向下传递一个 5-10 层对象。这应该会导致每秒几千个信号。这是“我点击了一个按钮”的形式。我所有的对象也会在大约每 100 毫秒的计时器上向他们发出自我信号,以便他们可以进行一些处理。

什么是最快的 C++ Signal/Slot 实现,它很小并且不需要其他库,例如 boost。(我需要保持二进制文件的总大小非常小)。

我见过 libSigC++、sigSlot、Cpp-Events、

4

3 回答 3

6

pbhogan 的 Signals 怎么样:

https://github.com/pbhogan/Signals

它超级快(使用 Don Clugston 编写的FastDelegate代码 - Ismael 也提到过),而且非常易于使用。我已经使用了一段时间了,没有任何问题。

于 2011-05-06T21:04:47.327 回答
4

通常,信号库的设计目的是易于使用,而不是考虑到性能。在追求快速执行时,您可以查看这篇文章可能会有所帮助。

在您的情况下,我将开始尝试更简单的方法,例如 sigslot。但是在这种情况下我不会使用信号库......可能是某种消息队列,带有某种时间戳。

于 2010-03-10T16:19:54.097 回答
0

即使是最复杂和功能丰富的信号/槽库也是相当轻量级的。在大多数情况下,信号发出的速度与虚函数调用相当。对于诸如 boost::signals 和 libsigc++ 之类的模板驱动库,您将获得与传递函数指针基本相同的性能。

于 2010-07-21T12:25:36.687 回答