X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkTimer.cxx;h=89297f3088ae88f1511cd231ca2026ac0d856a6b;hb=e7f88877b4e3d136e9cfa08613490df94e2728d7;hp=85b65fde02689c9725a4b75d8982c79a51a29bdb;hpb=931a42358442f4ee4f314613c991c838d4b4e3b7;p=clitk.git diff --git a/common/clitkTimer.cxx b/common/clitkTimer.cxx index 85b65fd..89297f3 100644 --- a/common/clitkTimer.cxx +++ b/common/clitkTimer.cxx @@ -1,6 +1,22 @@ +/*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv + + Authors belong to: + - University of LYON http://www.universite-lyon.fr/ + - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the copyright notices for more information. + + It is distributed under dual licence + + - BSD See included LICENSE.txt file + - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +======================================================================-====*/ #ifndef CLITKTIMER_CXX #define CLITKTIMER_CXX - /** ================================================= * @file clitkTimer.cxx @@ -20,23 +36,37 @@ /// Constructs the class clitk::Timer::Timer() { Reset(); +#if defined(WIN32) + QueryPerformanceFrequency((LARGE_INTEGER*)&mFrequency); +#endif } //==================================================================== //==================================================================== void clitk::Timer::Start() { +#if defined(unix) || defined(__APPLE__) getrusage(RUSAGE_SELF, &mBegin); +#elif defined(WIN32) + QueryPerformanceCounter((LARGE_INTEGER*)&mBegin); +#endif mNumberOfCall++; } //==================================================================== //==================================================================== void clitk::Timer::Stop(bool accumulate) { +#if defined(unix) || defined (__APPLE__) getrusage(RUSAGE_SELF, &mEnd); if (accumulate) { mElapsed += (mEnd.ru_utime.tv_usec - mBegin.ru_utime.tv_usec)+ (mEnd.ru_utime.tv_sec - mBegin.ru_utime.tv_sec)*1000000; } +#elif defined(WIN32) + QueryPerformanceCounter((LARGE_INTEGER*)&mEnd); + if (accumulate) { + mElapsed += ((mEnd-mBegin)*1000000)/(long double)mFrequency; + } +#endif else { mNumberOfCall--; }