使用 Visual c++2010 express 和 WinXP 运行以下代码时,“for 循环”始终按如下方式执行:
31ms读取25000行,62ms读取25000行,46ms读取25000行,62ms读取25000行,46ms读取25000行,46ms读取25000行
但是,当我在 Windows 7 Home Edition 上使用 Visual c++2010 express 进行编译时,for 循环执行如下:
62ms读取25000行,530ms读取25000行,514ms读取25000行,514ms读取25000行,514ms读取25000行,530ms读取25000行
我试图弄清楚为什么“for loop”第一次在 Windows 7 上运行 t 毫秒,但随后跳到 10 xt 毫秒以进行后续运行。而在 XP 上,它始终运行 t 毫秒。它可能是 Windows 7 构建/设置所特有的东西,也可能是代码中的基本内容。
我最近开始编写 C++ 编程,非常感谢帮助我了解 Windows 7 环境中发生的情况。
#include <iostream>
#include <string>
#include <vector>
#include "Elapsed.h"
using namespace std;
void readfile(){
Elapsed time1;
vector<string> lines;
lines.reserve(50000);
string s = "this is a string this is a longer string ";
for(int i = 0; i<25000; i++) lines.push_back(s);
cout<<"Read "<<lines.size()<<" lines in "<<time1().total_milliseconds()<<"ms\n";
}
int main(){
readfile();
readfile();
readfile();
readfile();
readfile();
readfile();
system("PAUSE");
}
#include <boost/date_time.hpp>
// Purpose: track elapsed time from constructor or reset
class Elapsed {
boost::posix_time::ptime m_when;
public:
static boost::posix_time::ptime now(){return boost::posix_time::microsec_clock::universal_time();}
Elapsed(): m_when( now() )
{
} // end constructor
void reset() { m_when = now(); }
boost::posix_time::time_duration operator()() const {
return now() - m_when;
} //end operator()
};// end class