5

chrono::steady_clockプログラム内のコードブロック間で経過した小数秒を測定するために使用しようとしています。LiveWorkSpace ( http://liveworkspace.org/code/YT1I$9 )で動作するこのコード ブロックがあります。

#include <chrono>
#include <iostream>
#include <vector>

int main()
{
    auto start = std::chrono::steady_clock::now();
    for (unsigned long long int i = 0; i < 10000; ++i) {
       std::vector<int> v(i, 1);
    }
    auto end = std::chrono::steady_clock::now();

    auto difference = std::chrono::duration_cast<std::chrono::microseconds>(end - start).count();

    std::cout << "seconds since start: " << ((double)difference / 1000000);
}

同じアイデアを私のプログラムに実装すると、次のようになります。

auto start = std::chrono::steady_clock::now();
// block of code to time
auto end = std::chrono::stead_clock::now();

auto difference = std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()

std::cout << "seconds since start: " << ((double) difference / 1000000);

プログラムは と の値のみを出力し0ます0.001。私のコードブロックの実行時間が常にマイクロ秒に等しい0かどうかは非常に疑わしい1000ので、この丸めの原因は何ですか?また、適切な小数部の値を取得できるようにするにはどうすればそれを削除できますか?

これは Windows プログラムです。

4

2 に答える 2