簡體   English   中英

如何在沒有標准庫的情況下制作自己的計時器?

[英]How can I make my own timer without standard library?

是否有一些特定的迭代次數,我可以使用for loop ,因此完全執行循環需要1秒鍾? 例如,以下代碼在我的機器上執行了0.125秒:

#include <iostream>
#include <cmath>

using namespace  std;

int main(){
    long long a=0;

    for (a=0;a<=pow(10,4);a++);
}

雖然,<= 8 * pow(10,4)需要0.206秒。 編譯器是GCC 4.9.2。 IDE是代碼塊。

我的電腦的規格:操作系統:Windows 8.1 在此輸入圖像描述

根據收到的評論,我將這個答案發布到您的問題中。

制作計時器是不可能的,因為:

  • 迭代將花費的時間是不可預測的,這不僅取決於所使用的CPU,還需要考慮電源管理(調度程序)。 (通過tux3)
  • 人們將不得不使用實時操作系統來實現這一目標。 非實時操作系統中存在太多抖動。 Windows可以決定暫時安排其他進程,或者將CPU用於例如內核網絡,磁盤I / O等優先於時間的CPU。 (由nos)

  • 人們不能僅僅在標准C ++中在托管環境中“制作自己的計時器”。 定時器本質上是一種與OS調度程序通信的機制,並且需要特定於平台的OS服務。 (由Kerrek SB提供)

  • 編譯器將優化這樣的循環並通過死代碼消除(通過πάνταῥεῖ和Jongware)將其刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM