36 lines
1.3 KiB
C++
36 lines
1.3 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) 2018 martysama0134. All rights reserved.
|
|
//
|
|
// This code is licensed under the MIT License (MIT).
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
// THE SOFTWARE.
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
#pragma once
|
|
|
|
#include <chrono>
|
|
#include <iostream>
|
|
namespace msl
|
|
{
|
|
template <class F> auto evaluate(F && func, const std::size_t tries = 1)
|
|
{
|
|
const auto start = std::chrono::steady_clock::now();
|
|
for (std::size_t i = 0; i < tries; i++)
|
|
func();
|
|
return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - start);
|
|
}
|
|
|
|
template <class F> void bench(F && func, const std::size_t tries = 10000)
|
|
{
|
|
std::cout << "Elapsed time: " << evaluate(func, tries).count() << "ms\n";
|
|
}
|
|
|
|
} // namespace msl
|