我有一个通过 UDP 记录状态切换的程序。我需要记录功能尽可能快,但知道网络被认为很慢。从单独的线程发送 UDP 数据有什么好处,或者发送 UDP 只是一个快速调用,因为不需要设置或等待(假设我预先打开了套接字)?
如果它立即返回,我可以接受,但如果它在内部等待一些 I/O 资源,这可能是个问题。可以?
问问题
322 次
2 回答
1
如果您没有发送大量 [我的意思是每分钟兆字节] 数据 [或非常频繁](每分钟数百个数据包),我希望send
(or write
) 相当快。
需要很长时间的唯一原因是,如果您提供的数据多于网络可以接收的数据,因此内核必须等待空闲的缓冲槽可用。
与与性能相关的所有事情一样,测量总是比在互联网上询问要好......我希望,在现代 PC 上,sendmsg
对于一个小数据包,调用大约是几百纳秒,大约如果数据包超过几十个字节,则每 8 个字节额外增加一纳秒,最大为几千字节。当您达到数百 KB 时,时间会增加 3-10 倍。
于 2013-02-09T21:54:24.210 回答
0
它可能。为了防止它等待,只需将套接字设置为非阻塞。
您可能有兴趣了解 Python 如何设置适当的标志。
于 2013-02-09T21:52:15.047 回答