// Copyright 2009-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 #pragma once #include "default.h" namespace embree { /*! helper structure for the implementation of the profile functions below */ struct ProfileTimer { … }; /*! This function executes some code block multiple times and measured sections of it. Use the following way: profile(1,10,1000,[&](ProfileTimer& timer) { // code timer("A"); // code timer("B"); }); */ template<typename Closure> void profile(const size_t numSkip, const size_t numIter, const size_t numElements, const Closure& closure) { … } /*! similar as the function above, but the timer object comes externally */ template<typename Closure> void profile(ProfileTimer& timer, const size_t numSkip, const size_t numIter, const size_t numElements, const Closure& closure) { … } }