简单地创建一个真正的巨大的源文件,手动初始化一个具有数十万个值的向量的合法优化吗?而不是将具有相同值的文本文件解析为矢量?巨大的.cpp文件比从文本文件中读取更好?
对不起,可能措辞更好。解析文本文件的功能非常缓慢,因为C++的流读取速度非常慢(大约需要6分钟,而不是C#版本中的大约6秒。)
会使得海量数组初始化文件成为合法的解决方案吗?这似乎并不优雅,但如果它的速度更快,那么我想这是最好
这是文件的阅读代码:从文本文件
//parses the text path vector into the engine
void Level::PopulatePathVectors(string pathTable)
{
// Read the file line by line.
ifstream myFile(pathTable);
for (unsigned int i = 0; i < nodes.size(); i++)
{
pathLookupVectors.push_back(vector<vector<int>>());
for (unsigned int j = 0; j < nodes.size(); j++)
{
string line;
if (getline(myFile, line)) //enter if a line is read successfully
{
stringstream ss(line);
istream_iterator<int> begin(ss), end;
pathLookupVectors[i].push_back(vector<int>(begin, end));
}
}
}
myFile.close();
}
样品线(其中有大约50万具有类似格式但长度不同的线条
0 5 3 12 65 87 n
问题不在于C++,它是您读取数据和初始化向量的函数。 – onit
@bzlm哇谢谢!学会编码,呵呵,从来没有想过那个。屁股。 http://stackoverflow.com/questions/7809473/why-is-this-so-much-slower-in-c – SirYakalot
这可能是合法的,取决于你的用例,但它也脆弱,除非你只关心工作那一个数据集。但是,您可以向我们展示您的文件阅读代码,也许有一些问题需要解决。 – birryree