gpt4 book ai didi

c++ - 如何有效地将结构 vector 写入文件?

转载 作者:行者123 更新时间:2023-11-30 01:23:38 26 4
gpt4 key购买 nike

我的代码正在将大小大于 1000 万的 vector 写入文本文件。我使用 clock() 为 writefile 函数及其程序中最慢的部分计时。有没有比我下面的方法更好的写入文件的方法?

void writefile(vector<fields>& fieldsvec, ofstream& sigfile, ofstream& noisefile)
/* Writes clean and noise data to respective files
*
* fieldsvec: vector of clean data
* noisevec: vector of noise data
* sigfile: file to store clean data
* noisefile: file to store noise data
*/
{
for(unsigned int i=0; i<fieldsvec.size(); i++)
{
if(fieldsvec[i].nflag==false)
{
sigfile << fieldsvec[i].timestamp << ";" << fieldsvec[i].price << ";" << fieldsvec[i].units;
sigfile << endl;
}
else
{
noisefile << fieldsvec[i].timestamp << ";" << fieldsvec[i].price << ";" << fieldsvec[i].units;
noisefile << endl;
}
}
}

我的结构在哪里:

struct fields
// Stores a parsed line of a file
{
public:
string timestamp;
float price;
float units;
bool nflag; //flag if noise (TRUE=NOISE)
};

最佳答案

我建议去掉 endl。这每次都会有效地刷新缓冲区,从而大大增加系统调用的数量。

'\n'代替endl应该是一个很好的改进。

顺便说一句,代码可以简化:

ofstream& files[2] = { sigfile, noisefile };
for(unsigned int i=0; i<fieldsvec.size(); i++)
files[fieldsvec[i].nflag] << fieldsvec[i].timestamp << ';' << fieldsvec[i].price << ";\n";

关于c++ - 如何有效地将结构 vector 写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14667376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com