我們經常需要在**中對某個方法的執行效率進行確認。例如我們有下面乙個方法
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裡面已經禁止使用了,要相容新版本和老版本的,以下方法對這些使用方法進行了封裝整理,使用起來就更簡...