2015-01-08 3 views
0

이것이 사실인지 아닌지는 확실하지 않지만 코드에서 초 수를 기록하는 currentTime이라는 변수의 값을 인쇄합니다 응용 프로그램이 실행 된 이후 currentTime 변수는 time (NULL) - epocTime 으로 기록됩니다. epocTime은 코드가 시작될 때 time (NULL)로 설정됩니다. currentTime은 double 유형이지만, 응용 프로그램이 실행될 때 1.0000, 2.0000, 3.0000 등과 같이 인쇄됩니다. 그러나 결코 정수가 아닙니다. 시간을 기록하는 방법을 변경하여 밀리 초가 기록되도록 할 수 있습니까? 예를 들어 밀리 초를 기록하는 time() 메서드를 제공 할 수있는 매개 변수가 있습니다.C++의 시간 (NULL)은 밀리 초가 아닌 초를 카운트합니다.

+5

http://en.cppreference.com/w/cpp/chrono – Cthulhu

+1

'시간을()'당신에게 정수를 제공합니다. 그 값을 지정하고 변환하는 것은 중요하지 않습니다. 마술처럼 마이크로 초 해상도를 얻을 수는 없습니다. –

답변

1

time()은 거의 항상 1970 년 1 월 1 일 이후의 초 수를 포함하는 정수 유형을 반환합니다. 변경하려면 time() 자체로 할 수있는 일이 많지 않습니다.

대신 당신이 std::chrono::steady_clock에 표시되어야합니다

#include <chrono> 
#include <thread> 
#include <iostream> 

int main() { 
    auto start = std::chrono::steady_clock::now(); 

    // Some work 
    std::this_thread::sleep_for(std::chrono::seconds(1)); 

    auto end = std::chrono::steady_clock::now(); 
    auto elapsed = end - start; 

    std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(elapsed).count() << " milliseconds\n"; 
} 
+1

_ "별로 없습니다"_ 또는 실제로는 아무것도 아닙니다. 그리고 [당신의'std :: clock' 제안은 단순히 잘못되었습니다.] (http://kera.name/articles/2011/03/tomalaks-tuesday-tip-11-sleep-your-way-to-success/). –

+1

@LightnessRacesinOrbit : 오래된 시계 중 벽 시간 또는 CPU 시간을 반환하는 것이 무엇인지, 그리고 프로세스가 프로세스를 전환 할 때 비참하게 실패하는지 잊어 버립니다. 그럼 대답의 일부만 삭제하겠습니다. 링크를 주셔서 감사합니다. 그리고 나는 요즘 내 기억에 이길 수 있습니다. –

관련 문제