std::chrono::high_solution_clock 해상도 불일치
std::chrono::high_solution_clock에 나노초 해상도를 지정했음에도 불구하고 불일치가 발생합니다. 시간 간격을 측정할 때 이는 제공된 테스트 프로그램에서 std::cout에 의해 보고된 시간이 예상 해상도 범위를 정확하게 벗어나는 것을 볼 수 있습니다.
불일치 해결
이러한 불일치의 원인은 Visual Studio 2012의 std::chrono::high_solution_clock 구현에 있습니다. 이 환경에서 high_solution_clock은 약 1밀리초의 해상도를 갖는 system_clock의 별칭으로 정의됩니다.
Visual Studio 2012 수정
Visual에서 진정한 고해상도 타이머를 얻으려면 맞춤형 고해상도 클럭 구현인 Studio 2012는 권장사항:
HighResClock.h
struct HighResClock { typedef long long rep; typedef std::nano period; typedef std::chrono::duration<rep, period> duration; typedef std::chrono::time_point<HighResClock> time_point; static const bool is_steady = true; static time_point now(); };
HighResClock.cpp
namespace { const long long g_Frequency = []() -> long long { LARGE_INTEGER frequency; QueryPerformanceFrequency(&frequency); return frequency.QuadPart; }(); } HighResClock::time_point HighResClock::now() { LARGE_INTEGER count; QueryPerformanceCounter(&count); return time_point(duration(count.QuadPart * static_cast<rep>(period::den) / g_Frequency)); }
사용자 정의 사용 시계
동일한 기능으로 std::chrono::high_solution_clock 대신 사용자 정의 HighResClock을 사용할 수 있습니다. QueryPerformanceCounter를 직접 활용하여 정확한 고해상도 타이밍을 제공합니다.
위 내용은 `std::chrono::high_solution_clock`이 나노초 해상도에도 불구하고 불일치를 표시하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!