从VC10切换到VC11在读取double
个数字的文件时,我发现性能下降了10倍:
#include <iostream>
int main() {
double sum = 0, x;
for(int i=0; i<1000000; i++){
std::cin >> x;
sum += x;
}
std::cerr << sum << std::endl;
return 0;
}
我在Developer Studio中构建了可执行文件,以便环境最多选择发布模式中的选项。
任何人都可以证实吗?
可能是什么问题呢?可能与locale
相关吗?
提前感谢,
andreas
答案 0 :(得分:0)
*由于某些原因我的上一个答案被删除了(我承认第一句话有点令人困惑,因为当它得到更好的结果时笨拙的编辑)
实际上,对我而言,表现大致相同。
VC11写入/读取1M双打 - &gt; 6.600 / 3.562秒
VC10写入/读取1M双打 - &gt; 6.266 / 3.606秒
所以在我的实验中,从vc11中的文件读取双打是aprox。与vc10相同的性能。 Codesample:
int _tmain(int argc, _TCHAR* argv[])
{
auto x = 0.0;
auto numberofdoubles = 1000000;
auto filename = "C:\\double.txt";
{
std::ofstream filestr(filename);
auto starttime = clock();
for(int i=0; i<numberofdoubles; i++)
filestr << (double)i << " ";
auto endtime = clock();
auto elapsed = (double)(endtime - starttime)/CLOCKS_PER_SEC;
std::cout << "writing: " << elapsed << std::endl;
}
{
std::ifstream filestr (filename);
auto starttime = clock();
for(int i=0; i<numberofdoubles; i++)
filestr >> x;
auto endtime = clock();
auto elapsed = (double)(endtime - starttime)/CLOCKS_PER_SEC;
std::cout << "reading: " << elapsed << std::endl;
}
return 0;
}