c – 对于简单的应用程序,boost :: signals2是否过度杀伤?
发布时间:2020-12-16 10:34:25 所属栏目:百科 来源:网络整理
导读:在限制为C 03的环境中,boost :: signals2与boost :: function和boost :: bind一起使用,以在组件之间实现简单的消息传递系统.它工作得很好,我也没有任何问题. 但是,在完全支持C 11的另一个环境中,对于非常简单的应用程序,boost :: signals2是否过度杀伤? 简
在限制为C 03的环境中,boost :: signals2与boost :: function和boost :: bind一起使用,以在组件之间实现简单的消息传递系统.它工作得很好,我也没有任何问题.
但是,在完全支持C 11的另一个环境中,对于非常简单的应用程序,boost :: signals2是否过度杀伤? 简单来说,我的意思是: >单线程 性能是这个应用程序的关键,因此应用程序不需要的boost :: signals2的所有奇迹可能弊大于利. 现在,只有一个std :: vector< std :: function>处理这个问题,如果认为合适的话,切换到boost :: signals2之类的东西会非常简单. 解决方法
我最近遇到了一个类似简单要求的项目的相同问题,并做了一些我想在这里分享的研究.
与简单的回调函数实现相比,我的主要兴趣在于boost :: signals2的开销.最后,我做了一些研究,如下表所示: Benchmark Duration (normalized) --------------------------------------------------------------------- Direct function call 1 Function pointer call 1 Virtual function call 1 std::function call 1.5 std::vector<std::function> call 2 boost::signals signal invocation 78 boost::signals2 signal invocation (dummy mutex) 43 boost::signals2 signal invocation 92 测量采用Ubuntu 15.04,gcc 4.9.2,优化-O2,Boost v1.55.因为绝对值可能在我的框外无意义,所以值被标准化.更新版本的Boost可能会更快. 我的结论是:如果性能很关键并且您不需要线程安全(或其他高级功能)重新考虑使用boost :: signals2. 如果要在机器上重现这些措施,则代码可用here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |