symbian 時間使用和統計(計算)函數(類)已耗用時間

來源:互聯網
上載者:User

(1)TTime::HomeTime() / TTime::UniversalTime()

  最常見的時間擷取手段,精度不高;因涉及一定的運算過程,效率較低。適用於需要以常規“年月日時分秒”方式使用時間的場合。在EKA2平台下,其精度與低階系統時鐘(Nanokernel Timer)一致,通常為微妙層級。通過 HAL::Get(HAL::ENanoTickPeriod, result) 可以獲的具體精度。
  注意:它們使用的是系統時間,這是可以被其它進程修改的。

(2)User::TickCount()

  傳統的Tick計數器,精度通常僅為1/64秒(可能隨硬體有差異),適用於精度要求較低的場合。通過 HAL::Get(HAL::ESystemTickPeriod, result) 可以獲得具體精度。
  注意:在休眠(Standby)狀態下,TickCount將停止計數,所以User::TickCount()在休眠狀態下將“損失”計時!

(3)User::NTickCount()

  低階系統時鐘(Nanokernel Timer),通常提供微妙級Tick。通過 HAL::Get(HAL::ENanoTickPeriod, result) 可以獲得具體精度。
  注意:Symbian OS 6.x 沒有此API。與TickCount不同的是,User::NTickCount()在休眠狀態下不“損失”計時。

(4)User::FastCounter()

  傳回值類似於Tick,提供Symbian OS所能支援的最高精度,通常比TTime::HomeTime()更準確。(如果硬體不支援high resolution timer,則毫秒級時鐘替代)而且,因為它採用快速的exec call讀取一個硬體寄存器的數值,效率很高。通過 HAL::Get(HALData::EFastCounterFrequency, result) 可以獲得其具體精度。
  注意:在每次終端從休眠狀態啟用後,它將同步至正確的數值,也就是說User::FastCounter()在休眠狀態下其實也是不“損失”計時的。

  另外,User::After(), CPeriodic也會在休眠狀態下“損失”計時,所以在手機這種特殊的應用環境中,需要特別注意不同定時器在“休眠”狀態下計時的差異。 

轉者附加:

(2)中提到的方法如下

        TInt period;
        User::LeaveIfError(HAL::Get(HALData::ESystemTickPeriod, period));
        TInt logMillisecsPerTick = period / 1000;
        TBuf<50> text;

        TInt timeInMillisecs = User::TickCount() * logMillisecsPerTick;
        TInt secs = timeInMillisecs / 1000;
        TInt millisecs = timeInMillisecs % 1000;
        text.Num(secs);
        text.Append('.');
        text.Num(millisecs);// 秒.毫秒 精度通常僅為1/64秒(可能隨硬體有差異)在模擬器上是1/100秒,

        ShowTextOnScreen(text);

 

 

統計函數已耗用時間

1)

TTime lastTime;

TTime currentTime;
lastTime.HomeTime();
func();
currentTime.HomeTime();

#ifdef __SERIES60_30__
TInt64 timeLasted64 = ( currentTime.Int64() - lastTime.Int64() );
TUint timeLasted= (TUint)cnt64;
#else
TUint timeLasted= ( ( currentTime.Int64() - lastTime.Int64() ) ).Low();
#endif

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.