在效能計數的時候使用StopWatch型別

2021-09-05 20:43:41 字數 1281 閱讀 8434

我們經常需要在**中對某個方法的執行效率進行確認。例如我們有下面乙個方法

static void run()

} 我們想知道該方法到底耗用了多少時間執行。傳統的做法是在方法執行之前先記錄下來當前時間,然後在結束的時候再記錄乙個時間,然後讓他們相減就可以了,類似下面這樣

datetime starttime = datetime.now;

run();

timespan span = datetime.now.subtract(starttime);

console.writeline("執行時間為:毫秒", span.milliseconds);

console.read();

大概是這樣,對吧?一定很眼熟

但是這樣做的結果不是很精確的,有的時候(如果時間比較短的時候),它可能統計不出來。

從.net 2.0開始,在system.diagnostics命名空間裡面新增了乙個特殊的型別,叫做stopwatch,它可以更加方便地做這樣的事情

stopwatch watch = new stopwatch();

watch.start();//這兩句**也可以縮寫為stopwacth watch=stopwatch.startnew()

run();//執行該方法

watch.stop();

console.writeline("執行時間為:秒", watch.elapsedmilliseconds / 1000.0f);

console.read();

看起來不錯,難道不是嗎?

**還可以進行下一步的改造,利用c# 3.0的擴充套件方法這個特性,我們可以編寫乙個型別

static class actionextension

watch.stop();

float sec = watch.elapsedmilliseconds / 1000.0f;

float freq = sec / runcount;

return string.format("總體執行時間為:秒,總體執行次數為:,平均執行時間為:秒", sec, runcount, freq);}}

這個型別的意思是,擴充套件了原先的action這個型別(這是乙個委託:delegate)。為它新增乙個profiler方法,返回特定方法的執行時間

action act = run;//建立乙個指向該run方法的委託

console.writeline(act.profiler(10));//針對該run方法執行10次

console.read();

這樣就可以了

在使用命令xp cmdshell的時候需要設定許可權

mssql2005 如何啟用xp cmdshell 預設情況下,sql server2005安裝完後,xp cmdshell是禁用的 可能是安全考慮 如果要使用它,可按以下步驟 允許配置高階選項 exec sp configure show advanced options 1 go 重新配置 re...

在使用命令xp cmdshell的時候需要設定許可權

mssql2005 如何啟用xp cmdshell 預設情況下,sql server2005安裝完後,xp cmdshell是禁用的 可能是安全考慮 如果要使用它,可按以下步驟 允許配置高階選項 exec sp configure show advanced options 1 go 重新配置 re...

iOS在使用Label時候的自適應問題

ios 在使用uilabel控制項時候會遇到一些問題,有些時候 需要顯示的文字比較多或者不確定字數的多少,這個時候就需要使用label的自適應。由於ios sdk公升級的也比較快,有些方法在新版本的sdk裡面已經禁止使用了,要相容新版本和老版本的,以下方法對這些使用方法進行了封裝整理,使用起來就更簡...