我正在开发一个需要编写数百个 ASCII 文件的 C++ 程序。这些文件将几乎相同。特别是,文件的大小始终完全相同,它们之间只有很少的字符不同。
为此,我目前在 fopen 上使用 for 循环打开 N 个文件,然后为每个数据 block (每隔几个字符)调用 fputc/fwrite。这似乎可行,但感觉应该有一些更有效的方法。
我可以做些什么来减少文件系统的负载和/或提高文件系统的速度吗?例如,保持数百个文件打开并一点一点地写入所有文件对文件系统来说有多费力?打开一个文件,完全写入一个文件,关闭它然后才继续下一个文件会更好吗?
最佳答案
如果您考虑执行任何这些系统调用时通常涉及的上下文切换成本,那么是的,您应该“搭载”尽可能多的数据,同时考虑写入时间和缓冲区的长度。
还考虑到这主要是一个 io 驱动的问题可能是一个 pub sub 架构,发布者缓冲数据供您提供给任何执行 io 工作的订阅者(并且还等待底层存储机制准备就绪) 可能是一个不错的选择。
关于c++ - 在 C++ 中一次将相似的内容写入多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17470062/