Die Messzeit ergibt Rückgabewerte von 0 oder 0,001

Ich versuche es zu benutzenchrono::steady_clock um Sekundenbruchteile zu messen, die zwischen einem Codeblock in meinem Programm vergangen sind. Ich habe diesen Codeblock in 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);
}

Wenn ich die gleiche Idee wie folgt in mein Programm implementiere:

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);

Das Programm druckt nur Werte von aus0 und0.001. Ich bezweifle sehr, dass die Ausführungszeit für meinen Codeblock immer gleich ist0 oder1000 Mikrosekunden. Worauf kommt es bei dieser Rundung an, und wie kann ich sie beseitigen, um die richtigen Bruchzahlen zu erhalten?

Dies ist ein Windows-Programm.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage