c – 从套接字读取1个字节的时间与读取大块的时间

前端之家收集整理的这篇文章主要介绍了c – 从套接字读取1个字节的时间与读取大块的时间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有什么区别 – 性能方面 – 从套接字读取1个字节一次到读取大块?

我有一个C应用程序需要从Web服务器提取页面并逐行解析收到的页面.目前,我一次读取1个字节,直到遇到CRLF或达到最大1024字节.

如果读取大块(例如一次1024个字节)在性能方面要好得多,那么关于如何实现我目前所拥有的相同行为的任何想法(即能够一次存储和处理1个html行 – 直到CRLF还没有消耗后续的字节)?

编辑:

我买不起太大的缓冲区.由于应用程序用于嵌入式设备,因此我的代码预算非常紧张.我更喜欢只保留一个固定大小的缓冲区,最好一次只保留一个html行.这使我的解析和其他处理变得容易,因为我随时尝试访问缓冲区进行解析,我可以假设我正在处理一个完整的html行.

谢谢.

解决方法

如果你是直接从套接字读取,而不是从可以缓冲的中间高级表示中读取,那么毫无疑问,最好完全读取1024个字节,将它们放入缓冲区的RAM中,然后解析RAM中的数据.

为什么?读取套接字是系统调用,它会在每次读取时引起上下文切换,这很昂贵.了解更多信息:IBM Tech Lib: Boost socket performances

原文链接:https://www.f2er.com/c/114339.html

猜你在找的C&C++相关文章