但是,在完全支持C 11的另一个环境中,对于非常简单的应用程序,boost :: signals2是否过度杀伤?
简单来说,我的意思是:
>单线程
>所有信号的返回类型均为voID
性能是这个应用程序的关键,因此应用程序不需要的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.
总结以上是内存溢出为你收集整理的c – 对于简单的应用程序,boost :: signals2是否过度杀伤?全部内容,希望文章能够帮你解决c – 对于简单的应用程序,boost :: signals2是否过度杀伤?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)