Files
snmalloc/src/test/measuretime.h
Matthew Parkinson 419347ba4a Optimise guarded memcpy (#449)
* Improve testing of memcpy including adding perf test.

* Change remaining_bytes to be branch free.

Use reciprocal division followed by multiply to remove a branch.
2022-01-07 17:09:13 +00:00

44 lines
906 B
C++

#pragma once
#include <chrono>
#include <iomanip>
#include <iostream>
#include <sstream>
class MeasureTime
{
std::stringstream ss;
std::chrono::time_point<std::chrono::high_resolution_clock> start =
std::chrono::high_resolution_clock::now();
bool quiet = false;
public:
~MeasureTime()
{
auto finish = std::chrono::high_resolution_clock::now();
auto diff = finish - start;
if (!quiet)
{
std::cout << ss.str() << ": " << std::setw(12) << diff.count() << " ns"
<< std::endl;
}
}
MeasureTime(bool quiet = false) : quiet(quiet) {}
template<typename T>
MeasureTime& operator<<(const T& s)
{
ss << s;
start = std::chrono::high_resolution_clock::now();
return *this;
}
std::chrono::nanoseconds get_time()
{
auto finish = std::chrono::high_resolution_clock::now();
auto diff = finish - start;
return diff;
}
};