簡單效能計數器 老趙版改良

2022-07-16 06:45:10 字數 1828 閱讀 9709

老趙版:

eaglet版:

通讀了下他們的**,老趙版在win7下是完美的,eaglet版~~~他在自己的續也說了getthreadtimes獲取執行緒實際執行時間上是有偏差的,我多次測試的確很不穩定。

想來想去也沒有什麼辦法可以改進的。。窩裡是win7,公司的電腦是苦逼的xp。。也就是說我不能乙個**兩個地方通吃。沒辦法改良下吧。

隨便鄙視還有framework2.0的公司真噁心

view code

public

static

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方法盡快 進入狀態...