第一種方法:使用stopwatch
class program上面的**重 複調用了方法100多萬次,花的時間是7ms左右。而如果把for裡的方法呼叫去掉,則只需要3ms左右,也就是說100多萬次的呼叫要花費5ms左右的時間。sw.stop();
console.writeline(sw.elapsedmilliseconds.tostring());
}private
static
void internalmethod()
}
如果把for增加到1億次,則需要500多ms。
第二種方法:使用environment.tickcount
class program第三種方法:高效能精確測量:win32 api 使用queryperformancecounter() 和 queryperformancefrequency() 方法支援高精度計時。console.writeline(environment.tickcount - vtickcount);}}
這些方法,比「標準的」毫秒精度的計時方法如 gettickcount() 之類有高得多的精度。另一方面來說,在 c# 中使用「非託管」的 api 函式會有一定的開銷,但比起使用一點都不精確的 gettickcount() api 函式來說要好得多了。
第乙個函式 queryperformancecounter() 查詢任意時刻高精度計數器的實際值。第二個函式 queryperformancefrequency() 返回高精度計數器每秒的計數值。為了獲得某一**段經歷的時間,你需要獲得**段開始前和結束後這兩個計時時刻的高精度計數器實際值。這兩個值的差指出了**段執行所經歷的時間。
然後通過將差除以每秒計數值(高精度計時器頻率),就可以計算經過的時間了。
duration = (stop - start) / frequency
經過時間 = (停止時間 - 開始時間) / 頻率
需要關於 queryperformancecounter 和 queryperformancefrequency 的更多資訊,請參閱 msdn 文件。
下面的類實現了 queryperformancecounter() 和 queryperformancefrequency() api 函式的功能.
using system;使用這個類很簡單。只需要建立乙個 hiperftimer 的例項,然後呼叫 start() 開始計時,stop() 停止計時。要獲得經過的時間,呼叫 duration()函式即可。using system.runtime.interopservices;
using system.componentmodel;
using system.threading;
namespace win32}//
開始計時器
public
void start()
//停止計時器
public
void stop()
//返回計時器經過時間(單位:秒)
public
double duration
}}}
參考下面的例子。
hiperftimer pt =以上介紹的就是c#三種效能分析計時器,希望對你有所幫助。new hiperftimer();
//建立新的 hiperftimer 物件
pt.start();
//啟動計時器
console.writeline(
"test\n
");
//需要計時的**
pt.stop();
//停止計時器
console.writeline(
"duration: sec\n
", pt.duration);
//列印需要計時部分**的用時
C 計時器的三種使用方法
system.timers.timer t new system.timers.timer 5000 設定時間間隔為5秒 private void form1 load object sender,eventargs e private void btnstart click object send...
C 計時器的三種使用方法
在.net中有三種計時器,一是system.windows.forms命名空間下的timer控制項,它直接繼承自componet 二是system.timers命名空間下的timer類。timer控制項 timer控制項只有繫結了tick事件,和設定enabled true後才會自動計時,停止計時可...
C 裡面的三種定時計時器 Timer
在.net中有三種計時器 1 system.windows.forms命名空間下的timer控制項,它直接繼承自componet。timer控制項只有繫結了tick事件和設定enabled true後才會自動計時,停止計時可以用stop 方法控制,通過stop 停止之後,如果想重新計時,可以用sta...