gpt4 book ai didi

c++ - 一次从套接字读取 1 个字节与读取大块

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:21 25 4
gpt4 key购买 nike

在性能方面,每次从套接字读取 1 个字节与读取大块之间有什么区别?

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

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

编辑:

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

谢谢。

最佳答案

我不能对 C++ 发表评论,但从其他平台来看 - 是的,这可以产生很大的不同;特别是代码需要执行的切换次数,以及需要担心流的异步性质等的次数。

但真正的考验当然是分析它。为什么不编写一个使用这两种方法处理任意文件的基本应用程序,并针对一些典型文件对其进行测试……效果通常是惊人的,如果代码是 IO 绑定(bind)的。如果文件很小,并且您的应用程序运行时的大部分时间都花在处理内存中的数据上,您不太可能注意到任何差异。

关于c++ - 一次从套接字读取 1 个字节与读取大块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/931713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com