X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkTimer.cxx;h=329ca13f04272d44104a3f0926e54e3b0e5b0aa8;hb=d55f025b18f68066a52b8f33c2dc6481e82c2580;hp=85b65fde02689c9725a4b75d8982c79a51a29bdb;hpb=931a42358442f4ee4f314613c991c838d4b4e3b7;p=clitk.git diff --git a/common/clitkTimer.cxx b/common/clitkTimer.cxx index 85b65fd..329ca13 100644 --- a/common/clitkTimer.cxx +++ b/common/clitkTimer.cxx @@ -1,15 +1,31 @@ +/*========================================================================= + 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://www.centreleonberard.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 * @author David Sarrut * @date 18 Jul 2007 16:27:45 - * - * @brief - * - * + * + * @brief + * + * =================================================*/ // #ifdef UNIX @@ -17,34 +33,54 @@ #include "clitkTimer.h" //==================================================================== -/// Constructs the class -clitk::Timer::Timer() { - Reset(); +/// Constructs the class +clitk::Timer::Timer() +{ + Reset(); +#if defined(_WIN32) + QueryPerformanceFrequency((LARGE_INTEGER*)&mFrequency); +#endif } //==================================================================== //==================================================================== -void clitk::Timer::Start() { +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) { +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; + (mEnd.ru_utime.tv_sec - mBegin.ru_utime.tv_sec)*1000000; } - else { + else +#elif defined(_WIN32) + QueryPerformanceCounter((LARGE_INTEGER*)&mEnd); + if (accumulate) { + mElapsed += ((mEnd-mBegin)*1000000)/(long double)mFrequency; + } + else +#endif + { mNumberOfCall--; } } //==================================================================== //==================================================================== -void clitk::Timer::Print(std::ostream & os) const { +void clitk::Timer::Print(std::ostream & os) const +{ if (mNumberOfCall != 1) { os << "Timer # = " << mNumberOfCall << std::endl; os << "Timer total = " << mElapsed << " usec \t" << mElapsed/1000000.0 << " sec." << mElapsed/1000000.0/60 << " min." @@ -58,19 +94,21 @@ void clitk::Timer::Print(std::ostream & os) const { // os << "\tmBegin.ru_utime.tv_sec = " << mBegin.ru_utime.tv_sec << std::endl; // os << "\tmEnd.ru_utime.tv_sec = " << mEnd.ru_utime.tv_sec << std::endl; // os << "\tmBegin.ru_utime.tv_usec = " << mBegin.ru_utime.tv_usec << std::endl; -// os << "\tmEnd.ru_utime.tv_usec = " << mEnd.ru_utime.tv_usec << std::endl; +// os << "\tmEnd.ru_utime.tv_usec = " << mEnd.ru_utime.tv_usec << std::endl; } //==================================================================== //==================================================================== -void clitk::Timer::Print(std::string text, std::ostream & os) const { - os << text; +void clitk::Timer::Print(std::string text, std::ostream & os) const +{ + os << text.c_str(); Print(os); -} +} //==================================================================== //==================================================================== -void clitk::Timer::Reset() { +void clitk::Timer::Reset() +{ mNumberOfCall = 0; mElapsed = 0; } @@ -78,4 +116,3 @@ void clitk::Timer::Reset() { // #endif // If UNIX #endif /* end #define CLITKTIMER_CXX */ -