加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:34:46 所属栏目:百科 来源:网络整理
导读:有什么区别 – 性能方面 – 从套接字读取1个字节一次到读取大块? 我有一个C应用程序需要从Web服务器提取页面并逐行解析收到的页面.目前,我一次读取1个字节,直到遇到CRLF或达到最大1024字节. 如果读取大块(例如一次1024个字节)在性能方面要好得多,那么关于如
有什么区别 – 性能方面 – 从套接字读取1个字节一次到读取大块?

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

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

编辑:

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

谢谢.

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读