【发布时间】:2012-11-30 22:41:14
【问题描述】:
我在用 C 读写文件时遇到性能问题。这是我的问题和解决方案,但速度很慢:
我有一个 ASCII 文件,我认为其中的每一行都是一条记录。我必须根据文件中某个位置存在的特定数字将此文件分成两个。 例如,如果位置 10 的数字为 0,则记录进入 file1,如果为 1,则记录进入 file2。
我所做的是打开输入文件和其他两个用于输出文件的文件流。我从输入文件中读取一行,进行比较,然后该行转到 file1 或 file2,然后读取下一条记录。 它工作正常,但速度很慢。请建议一种更快的方法。
这是文件的读取方式:
bytes_read = readline(infile, (void*)buffer, line_size+1);
fwrite 用于写入文件。文件大小约为 50 MB。读取整个输入文件后关闭文件。
【问题讨论】:
-
您应该向我们展示相关代码。对文件 I/O 进行编码有快速和慢速两种方式。也许你在做一些傻事。
-
感谢帕迪的评论。我添加了更多有问题的信息/代码。请帮忙。
-
你为什么要找?那会让你付出很多。如果您想丢弃接下来的 384 个字节,只需执行
fread代替 - 默认情况下,stdio文件流被缓冲。如果你真想找,至少用SEEK_CUR。 -
感谢 Paddy,让我探索 SEEK_CUR。
-
举一个你的“线条”的例子
标签: c performance file-io