gpt4 book ai didi

c++ - 为 rapidjson readBuffer 设置合适的大小

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:59 26 4
gpt4 key购买 nike

所以我一直在我的一个 c++ 项目中使用 rapidjson,并且我已经弄清楚如何使用它来满足我的项目需求。但是在清理我的代码时,我发现我只是为我的缓冲区大小分配了一个随机数。

char readBuffer[80000];
rapidjson::FileReadStream readStream( file, readBuffer, sizeof( readBuffer ) );

是否有适当的方法来设置 readBuffer 需要多大?

最佳答案

FileReadStream为每次内部迭代将一大块字节读入用户提供的缓冲区。通过使用这种流概念,它不需要将整个 JSON 文件读入内存。

缓冲区大小可能会影响性能,但不会影响正确性。

“最佳”缓冲区大小取决于平台和应用程序。

如果尺寸太小,由于fread()的数量增加,会产生更多的开销电话。

通常用户可能会为此缓冲区使用程序堆栈(如您的示例),因此它也不能太大,因为堆栈大小是有限的。对于一些使用大量线程的嵌入式系统或应用程序,在堆栈上使用大缓冲区可能是一个更大的问题。

总有一些参数可能会影响性能。如果你的应用程序真的需要最佳性能,我认为最好的方法是做实验。否则,我认为 4096(大多数平台的页面大小)或以上就可以了。

顺便说一下,R​​apidJSON 是开源的,这个类非常简单。只需阅读此 header file你会知道缓冲区是如何使用的。

附言使用 vector<>在这里不是一个好习惯。作为vector<>需要堆分配,这里只需要一个固定的大小。使用程序堆栈更便宜。

关于c++ - 为 rapidjson readBuffer 设置合适的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26901990/

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