我想经常在文件中写入数据,
我想知道每次写入时是否需要调用CreateFile(),
这种方式的成本是否比仅调用一次然后多次使用句柄的方式更高?
我想经常在文件中写入数据,
我想知道每次写入时是否需要调用CreateFile(),
这种方式的成本是否比仅调用一次然后多次使用句柄的方式更高?
CreateFile
函数每次调用都需要一定的时间(如果您多次打开同一个文件,则可能只需要微秒级别的时间,这要归功于驱动程序和操作系统的缓冲,但如果这对您很重要,请使用小型基准测试来进行测量)。但是,如果在操作中程序或系统崩溃,长时间保持文件打开可能会导致不愉快的结果——是否会出现这种情况取决于您正在处理的文件格式以及您正在对其执行的写入操作。
保持句柄打开并不一定是最好的方法。根据你的设计,保持一个打开的句柄可能会有问题。虽然CreateFile肯定会产生开销,但如果与I/O操作本身的成本相比较,那么它几乎可以忽略不计。话虽如此,确切的方法是尝试两种方式并测量差异。如果是可以忽略不计的,就像我想的那样,那么使用最适合你的方法。
重复使用文件句柄将提高性能并具有更好的设计。操作系统的磁盘缓存很可能会隐藏许多性能问题。我不确定为什么您要反复调用CreateFile(),除非您正在从不同的应用程序区域访问它,并且这使得传递句柄变得困难。
创建文件句柄会有一定的开销,因此最好创建一个句柄并将其保持在需要读写文件的整个过程中。这取决于你需要执行多少次操作,是每秒100次还是每分钟一次?