【发布时间】:2014-01-17 21:21:20
【问题描述】:
为什么
for (int i=0; i<1e6; ++i)
{
ofstream o("out.txt",ios_base::app);
o<<i;
}
比
慢ofstream o("out.txt",ios_base::app);
for (int i=0; i<1e6; ++i)
{
o<<i;
o.flush()
}
?我认为第一种更快,因为o 的可见性在第一种情况下比在第二种情况下要少,如果o 的初始化成本太高,编译器会优化它并创建一个二进制代码基本上以第二个为基础。一般来说,关于在循环内部或外部定义变量的建议是什么? Variables should be defined as late as possible!在什么情况下有效?
我是否可以通过在我以后不想使用的变量周围添加 {} 符号来提高程序的运行时间以降低可见性,或者编译器可以轻松有效地维护这些信息,因此无需填写我的带有 {} 的代码?
【问题讨论】:
标签: performance loops optimization initialization ofstream