c - C 中的写/读文件性能问题

标签 c performance file-io

我在用 C 语言读写文件时遇到性能问题。这是我的问题和解决方案,但速度很慢:

我有一个 ASCII 文件,我认为其中的每一行都是一条记录。我必须根据文件中某个位置存在的特定数字将该文件分成两个。 例如,如果位置 10 的数字为 0,则记录将转到 file1,如果位置 10 的数字为 1,则记录将转到 file2。

我所做的是打开输入文件和输出文件的其他两个文件流。我从输入文件中读取一行,进行比较,该行要么转到 file1 要么转到 file2,然后读取下一条记录。 它工作正常,但速度很慢。请建议一种更快地完成此操作的方法。

以下是读取文件的方式:

bytes_read = readline(infile, (void*)buffer, line_size+1);

fwrite 用于写入文件。文件大小约为 50 MB。读取整个输入文件后,文件将关闭。

最佳答案

您几乎已经找到了最快的方法!

  • 您有什么类型的 IO?缓冲/无缓冲?
  • 文件有多大?
  • 您是否打开/关闭每行的输出文件,还是保持打开状态?
  • 在输出文件中进行任何查找吗?
  • 哪部分很慢,读过吗?写?两者都?

IO 是程序中速度较慢的部分之一。一些代码可以帮助我们发现任何明显的问题。

关于c - C 中的写/读文件性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13654230/

相关文章:

java - 将文件从内部存储复制到Android中的外部存储

c - C中的遗传编程?

html - 测量渲染时间的工具

c++ - 需要缓存友好的数据结构来将字母的邻居存储在二维数组中

Android openFileOutput - 没有创建存储的权限

c# - 从文本文件中读取和解析整数

c - 用户在一行中键入一个单词和一个数字。将它们读入提供的变量中。然后打印

c - 如何诊断 Xcode 消息 “Linker command failed with exit code 1” ?

C 链表/-> 运算符

performance - Raytracer - 寻找下一个光线交点的标准方法是什么,它们的优缺点是什么