老趙版:
eaglet版:
通讀了下他們的**,老趙版在win7下是完美的,eaglet版~~~他在自己的續也說了getthreadtimes獲取執行緒實際執行時間上是有偏差的,我多次測試的確很不穩定。
想來想去也沒有什麼辦法可以改進的。。窩裡是win7,公司的電腦是苦逼的xp。。也就是說我不能乙個**兩個地方通吃。沒辦法改良下吧。
隨便鄙視還有framework2.0的公司真噁心
view code
publicstatic
class
codetimer
time(
"", 1, () =>);
}public
static
void time(string name, int
iteration, action action)
//3.
stopwatch watch = new
stopwatch();
watch.start();
ulong cyclecount =getcyclecount();
for (int i = 0; i < iteration; i++) action();
ulong cpucycles = getcyclecount() -cyclecount;
watch.stop();
//4.
console.foregroundcolor =currentforecolor;
console.writeline(
"\ttime elapsed:\t
" + watch.elapsedmilliseconds.tostring("
n0") + "ms"
); console.writeline(
"\tcpu cycles:\t
" + cpucycles.tostring("n0"
));
//5.
for (int i = 0; i <= gc.maxgeneration; i++)
console.writeline();
}private
static
ulong
getcyclecount()
else
return
cyclecount;
}[dllimport(
"kernel32.dll")]
[return
: marshalas(unmanagedtype.bool)]
static
extern
bool querythreadcycletime(intptr threadhandle, ref
ulong
cycletime);
[dllimport(
"kernel32.dll")]
static
extern
intptr getcurrentthread();
[dllimport(
"kernel32.dll
", setlasterror = true
)]
static
extern
bool getthreadtimes(intptr hthread, out
ulong
lpcreationtime,
outulong lpexittime, out
ulong lpkerneltime, out
ulong
lpusertime);
}
對老趙寫的簡單效能計數器的修改
早上看到老趙寫的這個效能計數器,感覺很實用,不過老趙用了很多.c 3.0 的新語法,還用了 vista 和 server 2008 下特有的win32 api,對於還在用c 2.0 或者還工作在 xp 或者 server 2003 下的兄弟們,只能望 心嘆了。應老趙的要求,我修改了他的 增加了對低版...
效能計數器之CPU
processor processor time 閥值 處理器的閥值一般設為85 含義 這個計數器是處理器活動的主要指標。高數值並不一定是壞事,但是如果其他處理器相關的計數器 比如 privileged time 或者processor queue length 線性增加的話,高cpu使用率就值得調...
乙個簡單的效能計數器 CodeTimer
static class codetimer 首先我們將靜態化建構函式,保證我們每次實用該類的時候,都先呼叫此方法。首先它會把當前執行緒及當前執行緒的優先順序設為最高,確保相對減少作業系統在排程上造成的干擾。然後呼叫一次timer方法進行 預熱 讓jit將il編譯成本地 讓time方法盡快 進入狀態...