C 耗時統計器(簡單)

2021-07-25 13:31:18 字數 3317 閱讀 1380

此處耗時統計實際上採用的是stopwatch ,因為耗時統計對時間要求比較嚴苛,

本文所採用方法其實理論上只是用來方便統計、可能準確度上讓人不大放心。

本文只是做了個簡單的封裝、準確度上差別應該不是問題。

呼叫方法見**summary

///耗時統計

///建議採用關閉時寫入、實時寫入日誌等耗時操作將嚴重影響統計

///初始化:string tjguid = watchtimerhelper.watchtimerstart("計時器001")

///追加訊息:watchtimerhelper.watchtimermsgattach(tjguid, "預警專案");

///關閉:watchtimerhelper.watchtimerstop(tjguid);

///public class watchtimerhelper

/// /// 計時器名稱

///

public string m_watchname

public e_raisetype m_raisetype

public e_raisetime m_raisetime

}/// /// 統計器時間線

///

private class stopwatchtimeline

/// /// 當前時間點執行總時 - 毫秒

///

public long elapsedmilliseconds

/// /// 當前時間點執行總時 - 秒

///

public long elapsedticks

public string msg

}/// /// 統計器

///

private class stopwatchex : stopwatch

public listm_raistimeline_list

}/// /// 統計輸出型別

///

public enum e_raisetype

/// /// 統計時間輸出型別

///

public enum e_raisetime

#endregion

#region 公共屬性

#endregion

#region 公共方法

/// /// 開啟耗時統計

///

public static string watchtimerstart(string watchname,e_raisetime raisetime = e_raisetime.realtime, e_raisetype raisetype = e_raisetype.console)

;watch.m_raistimeline_list = new list();

_m_watchtimerdic.add(watch.m_stopwatchdesc.m_watchguid, watch);

//開始統計

watch.start();

//附加訊息

watchtimermsgattach(watch.m_stopwatchdesc.m_watchguid, "統計器開啟!");

return watch.m_stopwatchdesc.m_watchguid;

}/// /// 關閉耗時統計

///

public static void watchtimerstop(string watchguid)

_m_watchtimerdic[watchguid].stop();

//附加訊息 - 輸出

watchtimermsgattach(watchguid, "統計器結束!");

//去除統計器

_m_watchtimerdic[watchguid] = null;

_m_watchtimerdic.remove(watchguid);

}/// /// 統計器附加訊息

///

///

///

public static void watchtimermsgattach(string watchguid,string msg)

var watch = _m_watchtimerdic[watchguid];

stringbuilder sb = new stringbuilder();

//統計器描述

//標識及時間

//附加訊息

//時間統計 - 總時秒,總時毫秒,上次總時間

//繼續換行

//訊息佇列

string actualmsg = sb.tostring();

stopwatchtimeline line = new stopwatchtimeline()

;watch.m_raistimeline_list.add(line);

switch (watch.m_stopwatchdesc.m_raisetime)

break;

case e_raisetime.stoptime: //退出

break;}}

#endregion

#region 私有方法

#region 實時輸出

/// /// 實時輸出

///

///

///

private static void outputwatchmsg_realtime(stopwatchex watch, string msg)

break;}}

/// /// 實時輸出 - 控制台

///

///

private static void outputwatchmsg_realtime_console(string msg)

#endregion

#region 關閉時輸出

/// /// 關閉時輸出

///

///

///

private static void outputwatchmsg_stoptime(stopwatchex watch)

break;}}

/// /// 關閉時輸出 - 控制台

///

///

private static void outputwatchmsg_stoptime_console(stopwatchex watch)

foreach (var item in watch.m_raistimeline_list)

}#endregion

#endregion

}

執行耗時統計

c stopwatch watch new stopwatch 例項化乙個計時器 watch.start 開始計時 此處為要計算的執行 例如 int sum 0 for int i 0 i 100 i watch.stop 結束計時 獲取當前例項測量得出的總執行時間 以毫秒為單位 string ti...

Delphi 時間耗時統計

處理事情 資料處理過程中,速度很慢,無法準確定位分析是db問題還是客戶端處理問題,所以增加計時統計日誌 delphi計時首次使用,查閱資料,予以記錄 var bgpoint,edpoind int64 offset int64 begin bgpoint gettickcount 邏輯處理語句。ed...

stopwatch計時器統計程式耗時

1 引入依賴 import com.google.common.base.stopwatch 2 基礎用法 stopwatch stopwatch stopwatch.createstarted 建立計時器並開始計時 dosomething log.info dosomething 耗時 stopw...