gpt4 book ai didi

C++从文件的多个部分读取速度太慢

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

我需要从一个大文件的多个位置读取字节数组。
我已经对文件进行了优化,以便必须阅读的部分尽可能少,并且这些部分应尽可能紧密地结合在一起。

我有20个这样的电话:

m_content.resize(iByteCount);

fseek(iReadFile,iStartPos ,SEEK_SET);
size_t readElements = fread(&m_content[0], sizeof(unsigned char), iByteCount, iReadFile);

iByteCount平均约为5000。

在使用fread之前,我使用了一个内存映射文件,但是结果大致相同。

第一次通话时,我的通话仍然太慢(大约200毫秒)。当我用相同的字节节重复读取相同的调用时,这非常快(大约1毫秒),但这对我没有帮助。

该文件很大(大约200 mb)。
调用之后,我必须从文件的不同部分读取 double 值,但是我无法避免这种情况。

我不想将其拆分为2个文件。我也看到了其他人使用的“大文件方法”,他们以某种方式克服了这个问题。

如果我使用内存映射,则读取的第一个调用总是很慢。如果我再从该部分重复阅读,它的速度很快。然后,当我从其他部分阅读时,它第一次变慢,但是第二次变亮。

我不知道为什么会这样。

有人对我还有其他想法吗?
谢谢你。

最佳答案

(已根据OP的要求移至答案)

您无法更快地读取文件(没有魔术标记说“读取速度更快”)。您的硬件有问题或200mS是应该花多长时间

关于C++从文件的多个部分读取速度太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17289511/

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