您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關C#中怎么測量cpu性能,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
C#測量cpu性能代碼如下:
privatevoidShowRunTime()
{
TimeSpants1=Process.GetCurrentProcess().TotalProcessorTime;
Stopwatchstw=newStopwatch();
stw.Start();
intCircles=1000;
for(inti=0;i<Circles;++i)
{
Console.WriteLine(i.ToString());
}
doubleMsecs=Process.GetCurrentProcess().
TotalProcessorTime.Subtract(ts1).TotalMilliseconds;stw.Stop();
Console.WriteLine(string.Format("循環次數:{0}CPU時間(毫秒)={1}實際時間(毫秒)={2}",
Circles,Msecs,stw.Elapsed.TotalMilliseconds,stw.ElapsedTicks));Console.WriteLine(string.Format("1tick={0}毫秒",
stw.Elapsed.TotalMilliseconds/stw.Elapsed.Ticks));}
程序輸出如下:
循環次數:1000 CPU時間(毫秒)=50.072 實際時間(毫秒)=666.9071 tick = 0.0001毫秒
可以看出在這個例子中,兩者差距比較大,其原因如下:
1)Windows是多任務操作系統,按照線程為單位對cpu時間輪詢分配。即一個程序運行的中途,可能被剝奪cpu資源,供其他程序運行。
2)程序本身會有不占用cpu時間的等待過程。這個等待可能是我們程序主動的,比如啟動一個進程,然后等待進程的結束;也可能是我們沒有意識到的,如例子 的Console.WriteLine方法,猜想其內部進行了一系列的異步I/O操作然后等待操作的完成,這其間并沒有占用調用進程的cpu時間,但耗費 了很多等待時間。
總結:
1 C#測量cpu性能,應該用程序運行時間來測量,當然也需要使用cpu時間作為參考,如果兩者差距很大,需要考慮為何出現這種情況。
2 .Net的Stopwatch類可以精確到1/10000毫秒,基本可以滿足測量精度。
看完上述內容,你們對C#中怎么測量cpu性能有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。