end*_*ian 13 c++ boost latency boost-asio
我正在从UDP端口读取单个数据项.这次读取必须尽可能地降低延迟.目前我正在通过boost :: asio库的async_receive_from方法阅读.有谁知道我到达网卡的数据包与我的用户代码中调用的回调方法之间会遇到的延迟类型?
Boost是一个非常好的库,但非常通用,是否有更低的延迟替代?
所有关于编写低延迟UDP网络程序的意见都非常受欢迎.
编辑:另一个问题,是否有一种相对可行的方法来估计我在NIC和用户模式之间遇到的延迟?
小智 17
您的延迟会有所不同,但远不是您能获得的最佳效果.以下是一些可以阻止更好延迟的事情:
Boost.Asio的
mutex锁定/解锁,以支持异步和同步方法的混乱.总而言之,asio对于高级应用程序开发人员来说,它是一个很好的库,但它带有很大的价格标签和大量的CPU周期.另一种选择是libevent,它好多了,但仍然旨在支持许多通知机制并且与平台无关.什么都不能击败本机机制,即epoll.
其他事情
我无法告诉您确切的数字,但假设您不会获得大量流量,使用Boost和常规Linux内核,使用常规硬件,您的延迟将介于约50微秒到约100毫秒之间.当你获得更多数据时,它会有所改善,并且在某些点开始下降后,它将始终是测距.我会说,如果你对这些数字没问题,不要费心去优化.
| 归档时间: |
|
| 查看次数: |
5031 次 |
| 最近记录: |