我需要类似套接字的本地IPC。我在windows上使用了命名管道和重叠IO,我想将应用程序重写为boost :: ASIO,以便它也可以使用UNIX域套接字。
我最近查看了libevent库的部分内容,我知道它只支持1.4版本中的socket()和select()。由于重叠的IO是非常有效的,因此将其排除显然是一个不可接受的特性,它在版本2(在alpha中)中得到了解决。另一个次优实现的例子是使用红黑树而不是prio-queues用于超时逻辑,该行是adressed沿线的某个地方。
有没有人对boost vs libevent / libev的性能特征有任何意见。它在某些平台上是否有任何明显的不良特征?我对这个问题的目标是,除非我绝对必须,否则我不想对ASIO库进行操作。我想知道boost :: asio是否以最佳方式使用最优的OS原语。
答案 0 :(得分:9)
我对文件阅读(my blogpost entry)进行了asio和我自己的impl的性能测试 - 用两个词来说 - asio显示了良好的效果。
答案 1 :(得分:5)
还有check this post关于boost :: asio中的锁定问题,可能会影响你。
答案 2 :(得分:3)
在我看来,Boost.Asio
是Windows-First
,大多数其他免费软件库都是Linux-First
。然而,Linux下的质量一直很好。由于这个软件被20个没有参与其开发的人所揭示。在提问者提出这个问题(2009)的时候,Linux下多线程的速度得到了迅速提升:http://think-async.com/Asio/LinuxPerformanceImprovements
Windows下的速度一直很好。我最大的抱怨是UDP套接字的设计,它的实现很差。