晚上用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萬次調用求平均,差異沒這么大,小調用差的太遠了,后面花了一個多小時寫了各種測試代碼找原因,未果。 實在無解,暫且記之,以后有時間再來繼續。有誰知道這個坑的請告訴我,大餐管飽。
|