kopia lustrzana https://github.com/jameshball/osci-render
62 wiersze
1.2 KiB
C++
62 wiersze
1.2 KiB
C++
|
/*
|
||
|
* IXBench.cpp
|
||
|
* Author: Benjamin Sergeant
|
||
|
* Copyright (c) 2017-2020 Machine Zone, Inc. All rights reserved.
|
||
|
*/
|
||
|
|
||
|
#include "IXBench.h"
|
||
|
|
||
|
#include <iostream>
|
||
|
|
||
|
namespace ix
|
||
|
{
|
||
|
Bench::Bench(const std::string& description)
|
||
|
: _description(description)
|
||
|
{
|
||
|
reset();
|
||
|
}
|
||
|
|
||
|
Bench::~Bench()
|
||
|
{
|
||
|
if (!_reported)
|
||
|
{
|
||
|
report();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Bench::reset()
|
||
|
{
|
||
|
_start = std::chrono::high_resolution_clock::now();
|
||
|
_reported = false;
|
||
|
}
|
||
|
|
||
|
void Bench::report()
|
||
|
{
|
||
|
auto now = std::chrono::high_resolution_clock::now();
|
||
|
auto microseconds = std::chrono::duration_cast<std::chrono::microseconds>(now - _start);
|
||
|
|
||
|
_duration = microseconds.count();
|
||
|
std::cerr << _description << " completed in " << _duration << " us" << std::endl;
|
||
|
|
||
|
setReported();
|
||
|
}
|
||
|
|
||
|
void Bench::record()
|
||
|
{
|
||
|
auto now = std::chrono::high_resolution_clock::now();
|
||
|
auto microseconds = std::chrono::duration_cast<std::chrono::microseconds>(now - _start);
|
||
|
|
||
|
_duration = microseconds.count();
|
||
|
}
|
||
|
|
||
|
void Bench::setReported()
|
||
|
{
|
||
|
_reported = true;
|
||
|
}
|
||
|
|
||
|
uint64_t Bench::getDuration() const
|
||
|
{
|
||
|
return _duration;
|
||
|
}
|
||
|
} // namespace ix
|