]> Creatis software - clitk.git/blobdiff - common/clitkTimer.cxx
- add CeCILL B licence
[clitk.git] / common / clitkTimer.cxx
index 85b65fde02689c9725a4b75d8982c79a51a29bdb..89297f3088ae88f1511cd231ca2026ac0d856a6b 100644 (file)
@@ -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
 /// 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--;
   }