晚上用VS2008编译器写了一个window控制台程序跑在IBM R400笔记本上,2008Server 的操作系统,发现一个神奇的问题,折腾了一个多小时没找到原因,先暂且当坑标记出来,希望以后不要再踩到了。
void main()
{
....
std::cout << "all MCUs is Runing" << std::endl; <<-------------- 加了这句,后面统计时长莫名其妙增加30-50%以上的时间消耗
Sleep(5000);
{
CPerfCounter counter;
callprogram();
counter.GetElapse(); <<--- 加了上面那句输出,这里统计出来的性能直线下降,莫名你个其妙啊!
}
}
加了std::cout这句向屏幕输出以后,再向下有一个计算某次调用性能的逻辑,每次耗时都比不加这句话的要慢30%以上。按理说,std::cout已经过去了,输出已经完成了,即使是异步原因,我后面加了5秒的等待,还不够你异步显示完成?然后试了10万次调用求平均,差异没这么大,小调用差的太远了,后面花了一个多小时写了各种测试代码找原因,未果。 实在无解,暂且记之,以后有时间再来继续。有谁知道这个坑的请告诉我,大餐管饱。
|