加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 巨大的.cpp文件比从文本文件中读取更好吗?

发布时间:2020-12-16 09:37:53 所属栏目:百科 来源:网络整理
导读:简单地创建一个真正巨大的源文件是一个合理的优化,它可以手动初始化具有数十万个值的向量?而不是将具有相同值的文本文件解析为向量? 对不起,这可能措辞得更好.解析文本文件的函数非常慢,因为C的流读取非常慢(在C#版本中大约需要6分钟而不是大约6秒). 将大
简单地创建一个真正巨大的源文件是一个合理的优化,它可以手动初始化具有数十万个值的向量?而不是将具有相同值的文本文件解析为向量?

对不起,这可能措辞得更好.解析文本文件的函数非常慢,因为C的流读取非常慢(在C#版本中大约需要6分钟而不是大约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();
    }

来自文本文件的样本行(其中有大约五十万行类似格式但长度不同.

0 5 3 12 65 87 n

解决方法

6分钟vs 6秒!!一定是你的C代码有问题.在您恢复到帖子中提到的极端“优化”之前,使用好的旧方法对其进行优化.

还要知道从文件读取将允许您更改矢量内容而不更改源代码.如果按照你提到的方式进行,你将不得不重新编码,再次编译n链接.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读