在我的应用程序中,我正在尝试合并已排序的文件(当然保持它们排序),因此我必须遍历两个文件中的每个元素以将最小值写入第三个.这对大文件来说非常慢,只要我没有看到任何其他选择(迭代必须完成)我正在尝试优化文件加载.我可以使用一些RAM,我可以用它来缓冲.我的意思是不是每次读取两个文件中的4个字节,而是每次读取100Mb之类的东西,然后使用该缓冲区,直到缓冲区中没有元素,然后我将再次重新填充缓冲区.但我想ifstream已经这样做了,它会给我更多的表现吗?有什么理由吗?如果fstream有,也许我可以改变那个缓冲区的大小?
添加
我当前的代码看起来像那样(伪代码)
// this is done in loop
int i1 = input1.read_integer();
int i2 = input2.read_integer();
if (!input1.eof() && !input2.eof())
{
if (i1 < i2)
{
output.write(i1);
input2.seek_back(sizeof(int));
} else
input1.seek_back(sizeof(int));
output.write(i2);
}
} else {
if (input1.eof())
output.write(i2);
else if (input2.eof())
output.write(i1);
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢的是
你能建议改进吗?
谢谢.