【问题标题】:Does boost::io_service post method cause a new allocation?boost::io_service post 方法是否会导致新的分配?
【发布时间】:2013-01-14 07:18:18
【问题描述】:

我正在使用 boost::io_service 通过带有 boost::bind 对象的 post() 方法对事件进行异步处理。有谁知道这是否会导致新的分配?我知道下面有一个事件队列,但我知道它是如何完全工作的。显然我很关心高性能。

【问题讨论】:

  • 您对您的应用程序进行了概要分析吗?
  • 是的。我试图避免在关键路径上进行新分配。

标签: c++ performance boost boost-asio


【解决方案1】:

是的,它会导致分配。如果分配是性能问题,您可以使用custom allocator for the handler

【讨论】:

  • 我自己测试了它,覆盖了全局 new。似乎在 boost::io_service 发布期间实际上发生了 3 次分配。即使使用处理程序的自定义分配器,它仍然会进行 2 次分配。
  • 分配可能来自boost::bind。如果您试图将 asio 开销保持在较低水平,那么可能值得看看 Marat Abrarov 的示例。他们展示了一些patterns 用于高性能 asio 的使用,这些在官方 asio 示例中没有。
猜你喜欢
  • 1970-01-01
  • 2019-01-22
  • 2012-11-26
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-07
  • 2016-12-12
相关资源
最近更新 更多