【发布时间】:2020-05-25 19:47:06
【问题描述】:
boost::asio::ip::tcp::basic_stream_socket::available 方法大约需要 3us 才能完成。这个时间量并不是特别慢,但仍然比我预期的只返回状态的方法调用要慢。需要这么长时间的原因是什么?它使用锁吗?如果是这样,并行的多个调用是否会相互锁定争用?
【问题讨论】:
-
与任何与性能相关的问题一样,第一个问题必须是“您是否测试了优化的发布版本或(编译器默认)未优化的调试版本”?测试未优化的构建是毫无意义的。
-
我使用
-O3标志来编译我的代码。对于 boost,我使用boost.org/doc/libs/1_66_0/more/getting_started/… 的默认说明安装了它。该页面没有讨论优化,但由于 Boost 库主要是仅标头,它可能相当没有实际意义。 -
好的。我只是想获取信息,因为您的原始问题没有提供它,人们问“为什么我的代码性能不佳?”真的很常见,只是为了发现他们甚至没有启用优化器这样做就可以解决问题。
-
就像 sehe 指出的那样,这是一个系统调用。是的,套接字子系统中有锁。以太网卡从不休眠。 :)
标签: c++ boost-asio boost-beast