gpt4 book ai didi

c - 如何以最大速度从硬盘读取/写入。我编码的多线程程序不能超过 15 mb/秒

转载 作者:行者123 更新时间:2023-11-30 18:41:54 26 4
gpt4 key购买 nike

我有一个 5 GB 256 的 csv 文件,我需要以最佳速度读取然后写回二进制形式的数据。

我做了以下安排来实现它:-

对于每个文件,都有一个对应的线程。我正在使用 C 函数 fscanf,fwrite。但在资源监视器中,它显示的硬盘速度不超过 12 MB/秒,并且最高事件时间为 100%。Google 表示硬盘的读/写速度可达 100 MB/秒。机器配置为:-英特尔 i7 酷睿 3.4。有 8 个核心。

请给我你的看法。我的目标是在 1 分钟内完成此过程。

** 使用一个线程花了我 12 分钟**

最佳答案

如果所有文件都驻留在同一磁盘上,则使用多个线程可能会适得其反。如果并行读取多个文件,HDD 磁头将在磁盘的不同区域之间不断来回移动,从而大大降低吞吐量。

我会测量内置操作系统实用程序读取文件所需的时间(在 Unix 上,类似于 ddcat/dev/null),然后使用它作为基线,记住您​​还需要写回内容。就吞吐量和寻道时间而言,写入的成本可能很高。

然后,我会提出一个单线程实现,以大块的形式读取和写入数据,并看看是否可以让它以与操作系统工具类似的方式执行。

附注如果您有 5GB 数据,并且 HDD 的最大原始吞吐量为 100MB,并且您还需要将转换后的数据写回同一磁盘,那么 1 分钟的目标是不现实的。

关于c - 如何以最大速度从硬盘读取/写入。我编码的多线程程序不能超过 15 mb/秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19487173/

26 4 0
文章推荐: c# - 在 asp.net 应用程序中重定向页面时删除引荐来源信息
文章推荐: php -