Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ fopen/fclose性能_C++_Fopen - Fatal编程技术网

C++ fopen/fclose性能

C++ fopen/fclose性能,c++,fopen,C++,Fopen,通常,大多数产品都实现了日志文件机制。就fopen/fclose性能而言,编写调试日志文件的最佳实践是什么。当某些语句需要写入日志文件时,保持文件指针打开(如果启用了记录器)是一个好选项还是频繁地打开和关闭文件指针?通常,这取决于您正在与哪种文件交互。当然,读取时必须打开二进制文件。如果文件是纯文本,则可以将文本解析为字符串并立即关闭该文件 我想说的是,您应该在整个程序生命周期中保持文件指针打开,但是如果您遇到崩溃,它永远不会关闭。然后,我会建议在相对安全和低风险的操作期间保持它的打开状态,但如

通常,大多数产品都实现了日志文件机制。就fopen/fclose性能而言,编写调试日志文件的最佳实践是什么。当某些语句需要写入日志文件时,保持文件指针打开(如果启用了记录器)是一个好选项还是频繁地打开和关闭文件指针?

通常,这取决于您正在与哪种文件交互。当然,读取时必须打开二进制文件。如果文件是纯文本,则可以将文本解析为字符串并立即关闭该文件


我想说的是,您应该在整个程序生命周期中保持文件指针打开,但是如果您遇到崩溃,它永远不会关闭。然后,我会建议在相对安全和低风险的操作期间保持它的打开状态,但如果您不喜欢应用程序的稳定性,则应经常打开/关闭它。没有人希望文件指针保持打开状态。:)

理想情况下,在结束之前不应关闭日志文件。通常,许多产品还具有一些“崩溃处理”机制,在应用程序终止之前,这些机制在任何情况下都会被调用。这将是关闭日志文件的最佳位置


对于windows,您可以根据可以使用的注释检查

fstream
。只需在开始时打开一个
,程序结束时它就会关闭。使用
fstream
而不是C风格的fopen/close可以简化很多事情,因为它符合RAII原则,所以您不必担心文件关闭。可能没有理由手动关闭该文件,并在每次需要记录某些内容时再次打开它。如果您不想同时从另一个程序写入同一个文件,那么定期打开和关闭该文件只会浪费时间和代码

我通常登录到内存(一个变量),在应用程序完成时只将其写入文件一次。当然,如果应用程序崩溃,或者你需要在程序运行时读取日志,这不会有多大好处,但这对我来说通常不是问题,而且性能更优越。根据你的需要,我猜。< /P>因为它是C++,为什么不使用fSt流?如果在每次日志操作之后使用<代码> FFLUHSUME(< /代码>),那么你就可能减少丢失任何书面数据的风险。有一点开销,但是这个开销比打开和关闭文件的开销小得多。@juraj:我也可以使用fstream,但我的问题是关于打开和关闭文件处理程序的。尽管使用了fstream,我们需要打开和关闭文件流。@jonanthan:不必担心数据丢失。thnx如果使用fstream,您必须只打开文件,如果需要,您可以关闭它,但不必关闭,因为它将在析构函数中关闭。