mFrame
載入中...
搜尋中...
無符合項目
ufm::util::ElapsedTimer 類別 參考文件

經過時間計時器,提供高精度的時間測量功能。 更多...

#include <ElapsedTimer.h>

類別ufm::util::ElapsedTimer的繼承圖:
ufm::lang::Object ufm::lang::Interface

公開方法(Public Methods)

 ElapsedTimer (void)
 建構 ElapsedTimer 物件並自動開始計時。
 
virtual ~ElapsedTimer (void) override
 解構 ElapsedTimer 物件。
 
ElapsedTimerstart (void)
 重置計時器
 
uint64 restart (void)
 重設計時器,並回傳重設前的經過時間
 
uint64 elapsed (void) const
 獲取從計時器啟動到現在的經過時間
 
ElapsedTimeradvanceStartTime (uint64 microseconds)
 將計時器的起始時間往後推進指定微秒數
 
bool hasElapsed (uint64 microseconds) const
 判斷計時器是否已經經過指定的微秒數
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Object
void * operator new (size_t n)
 使用運算子 new 分配記憶體
 
void * operator new (size_t n, void *p)
 在指定記憶體上調用運算子 new
 
virtual ufm::lang::ObjectgetObject (void) override
 取得對應的 Object 物件
 
void delay (int milliseconds) const
 延遲指定的毫秒數進行執行緒等待
 
bool equals (Object *object) const
 判斷與另一物件是否為相同參照(指標型態比較)
 
bool equals (Object &object) const
 判斷與另一物件是否為相同參照(參照型態比較)
 
void wait (void) const
 使當前線程等待直到被通知
 
bool wait (int timeout) const
 等待通知或超時
 
bool yield (void) const
 讓執行緒讓渡控制權給同優先權的下一個執行緒
 
int lock (void) const
 核心鎖定,鎖定期間禁止線程切換
 
int unlock (void) const
 核心解鎖
 
ufm::sys::ThreadcurrentThread (void) const
 取得當前執行緒指標
 
virtual int hashcode (void) const
 返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Interface
virtual ~Interface (void)=default
 虛擬析構函式
 

詳細描述

經過時間計時器,提供高精度的時間測量功能。

ElapsedTimer 是一個簡單易用的計時器類別,用於測量程式執行時間或 事件間隔。支援開始計時、重置計時器、查詢經過時間等基本功能, 適用於效能分析、超時檢測和時間管理等應用場景。

使用範例:
// 建立計時器並開始計時
timer.start(); // 或者建構時自動開始計時
// 執行一些需要計時的操作
performSomeOperation();
// 檢查經過的時間
uint64 elapsed = timer.elapsed();
ufm::lang::System::out().print("操作耗時: ");
// 檢查是否超過指定時間
if (timer.hasElapsed(1000000)) { // 檢查是否超過 1 秒(1,000,000 微秒)
ufm::lang::System::out().println("操作超過 1 秒");
}
// 重置計時器並獲取上次的時間
uint64 lastElapsed = timer.restart();
ufm::lang::System::out().print("上次計時: ");
ufm::lang::System::out().print((int)lastElapsed);
// 執行另一個操作
performAnotherOperation();
// 再次檢查時間
elapsed = timer.elapsed();
ufm::lang::System::out().print("新操作耗時: ");
// 效能測試範例
const int iterations = 1000;
timer.start();
for (int i = 0; i < iterations; ++i) {
// 測試的程式碼
testFunction();
}
uint64 totalTime = timer.elapsed();
double averageTime = static_cast<double>(totalTime) / iterations;
ufm::lang::System::out().print("總耗時: ");
ufm::lang::System::out().print((int)totalTime);
ufm::lang::System::out().print("平均耗時: ");
// 超時檢測範例
timer.start();
const uint64 timeout = 5000000; // 5 秒超時(5,000,000 微秒)
while (!operationComplete()) {
if (timer.hasElapsed(timeout)) {
ufm::lang::System::out().println("操作超時!");
break;
}
// 繼續等待或處理
// std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
// 時間調整範例
timer.start();
// ... 一些操作
// 將起始時間往後推進 1000 微秒 (1 毫秒)
timer.advanceStartTime(1000);
uint64 adjustedElapsed = timer.elapsed(); // 會比實際時間少 1000 微秒
// 方法鏈接範例
// 使用方法鏈接進行連續操作
uint64 result = chainTimer.start() // 開始計時
.advanceStartTime(500) // 調整起始時間
.elapsed(); // 獲取經過時間
// 複雜的鏈接操作
chainTimer.start() // 重新開始
.advanceStartTime(1000); // 調整時間
// 執行一些操作後檢查時間
performSomeOperation();
if (chainTimer.elapsed() > 500000) { // 如果超過 500 毫秒 (500,000 微秒)
ufm::lang::System::out().println("操作耗時較長");
}
// 重置並繼續鏈接
uint64 previousTime = chainTimer.restart(); // 獲取上次時間並重置
chainTimer.advanceStartTime(2000) // 調整起始時間
.elapsed(); // 可以繼續鏈接其他方法
PrintStream & println(void)
印出換行字元。
PrintStream & print(bool b, bool newLine=false)
印出布林值,可選擇是否換行。
static ufm::io::PrintStream & out(void)
獲取系統輸出緩衝區
Definition System.h:127
經過時間計時器,提供高精度的時間測量功能。
Definition ElapsedTimer.h:145
uint64 restart(void)
重設計時器,並回傳重設前的經過時間
uint64 elapsed(void) const
獲取從計時器啟動到現在的經過時間
ElapsedTimer & advanceStartTime(uint64 microseconds)
將計時器的起始時間往後推進指定微秒數
bool hasElapsed(uint64 microseconds) const
判斷計時器是否已經經過指定的微秒數
Definition ElapsedTimer.h:228
ElapsedTimer & start(void)
重置計時器
精度說明:
  • 時間測量基於系統提供的高精度時鐘
  • 內部儲存使用 64 位元整數,支援長時間測量
  • 時間單位為微秒 (microseconds)
  • advanceStartTime() 方法接受微秒參數以提供精細的時間調整
參閱
ufm::lang::System::microseconds64()

函式成員說明文件

◆ advanceStartTime()

ElapsedTimer & ufm::util::ElapsedTimer::advanceStartTime ( uint64 microseconds)

將計時器的起始時間往後推進指定微秒數

如果加總後超過目前時間,則起始時間將設為當前時間。

參數
microseconds要推進的微秒數
傳回值
ElapsedTimer& 返回自身引用,支援方法鏈接

◆ elapsed()

uint64 ufm::util::ElapsedTimer::elapsed ( void ) const

獲取從計時器啟動到現在的經過時間

傳回值
uint64 返回自計時器啟動以來經過的微秒數。

◆ hasElapsed()

bool ufm::util::ElapsedTimer::hasElapsed ( uint64 microseconds) const
inline

判斷計時器是否已經經過指定的微秒數

參數
microseconds要檢查的微秒數
傳回值
true 如果已經經過指定的微秒數
false 如果尚未經過指定的微秒數

◆ restart()

uint64 ufm::util::ElapsedTimer::restart ( void )

重設計時器,並回傳重設前的經過時間

此方法等同於先呼叫 elapsed(),再呼叫 start()。 常用於需要取得上一次計時週期時長並立即重啟計時的場合。

傳回值
uint64_t 返回本次重設前的經過微秒數。

◆ start()

ElapsedTimer & ufm::util::ElapsedTimer::start ( void )

重置計時器

將計時器的起始時間重置為當前時間。

傳回值
ElapsedTimer& 返回自身引用,支援方法鏈接

此類別(class) 文件是由下列檔案中產生: