【问题标题】:Has anyone done a performance analysis of boost::asio?有没有人做过 boost::asio 的性能分析?
【发布时间】:2009-11-25 20:19:05
【问题描述】:

我需要类似套接字的本地 IPC。我在 Windows 上使用了命名管道和重叠 IO,我想重写应用程序以提升::ASIO,以便它也可以使用 UNIX 域套接字。

我最近查看了 libevent 库的部分内容,我知道它在 1.4 版本中仅支持用于 windows 的 socket() 和 select()。由于重叠 IO 非常有效,因此将其排除在外显然是一个不可接受的特性,该特性在版本 2(处于 alpha 版本)中得到了解决。次优实现的另一个示例是使用红黑树与优先队列来实现超时逻辑,即adressed

有没有人对 boost 与 libevent/libev 的性能特征有任何意见。它在某些平台上是否有任何明显的不受欢迎的特征?我对这个问题的目标是,除非我绝对必须,否则我不想对 ASIO 库进行深挖。我想知道 boost::asio 是否以最优化的方式使用了最优化的操作系统原语。

【问题讨论】:

  • 我认为提问者关于 libevent 在 Windows 下不支持重叠 IO 的评论已经过时了。有人确认。

标签: performance networking asynchronous benchmarking boost-asio


【解决方案1】:

我在文件读取 (my blogpost entry) 上对 asio 和我自己的 impl 进行了性能测试 - 用两个词表示 - asio 显示了很好的结果。

【讨论】:

  • 请注意,此测试并未展示套接字上的 ASIO 性能。并且无法与它在重负载下的性能相提并论。
【解决方案2】:

另外check this post 关于 boost::asio 中的锁定问题,可能会影响您。

【讨论】:

    【解决方案3】:

    在我看来Boost.AsioWindows-First,而大多数其他免费软件库是Linux-First。不过Linux下的质量一直都不错。由于这个软件得到了 20 名没有参与开发的人的审查。在提问者提出这个问题时(2009 年),多线程 Linux 下的速度得到了迅速提高:http://think-async.com/Asio/LinuxPerformanceImprovements

    Windows 下的速度一直不错。我最大的抱怨是 UDP 套接字的设计,它的实现很差。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      相关资源
      最近更新 更多