gpt4 book ai didi

c++ - 减少整体计算时间

转载 作者:搜寻专家 更新时间:2023-10-31 01:35:18 25 4
gpt4 key购买 nike

所以我有一个计算量很大的 c++ 函数,它从文件中提取数字并将它们放入 vector 中。当我在 main 中运行这个函数时,它会花费很多时间。有没有可能以某种方式让这个函数计算一次,然后链接到主程序,这样我每次尝试运行它时都可以在主程序中节省宝贵的计算时间?

我的函数是这样的:

vector <double> extract (vector <double> foo)
{
ifstream wlm;
wlm.open("wlm.dat");

if(wlm.is_open())
{
while (!wlm.eof())
{
//blah blah extraction stuff
}
return foo;
}
else
cout<<"File didn't open"<<endl;
wlm.close();
}

我的主程序还有其他我在那边计算的东西。我不想从主程序中调用这个函数,因为它会花费很长时间。相反,我希望在编译期间预先提取 vector ,以便稍后在我的主程序中使用提取的 vector 。这可能吗?

最佳答案

  1. 将您的函数更改为:

    std::vector<double>& extract(std::vector<double>& foo)

所以你不会复制 vector 两次(我想这会占用大部分时间)。

  1. 尝试reserve()根据文件数据为您的 vector 存储(如果可能的话,这将使您避免重新分配)。
  2. 你应该返回 std::vector<double>总是,不仅仅是在取得好结果的情况下。
  3. 您应该在成功打开文件后立即将其关闭。

类似的东西:

    std::vector<double>& extract (std::vector<double>& foo)
{
ifstream wlm;
wlm.open("wlm.dat");

if(wlm.is_open())
{
while (!wlm.eof())
{
//blah blah extraction stuff
}
wlm.close();
}
else
cout<<"File didn't open"<<endl;

return foo;
}

关于c++ - 减少整体计算时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37652796/

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