【发布时间】:2009-10-08 17:36:32
【问题描述】:
我正在制作一个程序来处理一个大文件并将某些内容输出到另一个我需要稍后使用的文件。我想知道我应该只打印输出并将其重定向到文件,还是应该只写入程序中的文件。由于这将是一个非常大的文件,我想知道哪种方式更快,每一位都很重要。
【问题讨论】:
标签: file file-io redirect performance
我正在制作一个程序来处理一个大文件并将某些内容输出到另一个我需要稍后使用的文件。我想知道我应该只打印输出并将其重定向到文件,还是应该只写入程序中的文件。由于这将是一个非常大的文件,我想知道哪种方式更快,每一位都很重要。
【问题讨论】:
标签: file file-io redirect performance
您的问题实际上是,“我应该写入标准输出,还是使用本机文件 i/o”。
答案在一定程度上取决于您如何处理文件(是否可以逐行处理和输出),以及您的文件 i/o 代码编写的最佳程度。
很可能编写直接输出到文件的代码比写入标准输出的代码慢。
【讨论】:
有什么区别?标准输出是流,文件也是。在大多数操作系统上,实际上没有区别。在 Windows 上,在处理文件流和输出流时,您必须使用不同的函数,但它们仍然几乎完全相同的 API(只是文件的前缀带有“f”)。如果性能有所不同,我会感到非常惊讶。
您当然可以为文件使用替代 API,但我认为这样做没有令人信服的理由,因为文件仍然是操作系统级别的流。
【讨论】:
如果典型的输出是文本格式,我更喜欢标准输出。您可以简单地检查是否在终端上,重定向到文件或将其通过管道传送到下一个命令。性能应该是一样的。对于二进制输出,文件输出更为典型。
【讨论】: