ADMB Documentation  11.1.1015
 All Classes Files Functions Variables Typedefs Friends Defines
timer.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id: timer.cpp 542 2012-07-10 21:04:06Z johnoel $
00003  *
00004  * Author: David Fournier
00005  * Copyright (c) 2008-2012 Regents of the University of California 
00006  */
00011 #include <admodel.h>
00012 #if (defined(linux) || defined(__linux__)) && !defined(__WIN32)
00013 #include <sys/time.h>
00014 #include <iostream>
00015 
00020   adtimer::adtimer (void)
00021   {
00022     gettimeofday(&tv,0);
00023     
00024     tvold.tv_sec=tv.tv_sec;        
00025     tvold.tv_usec=tv.tv_usec;        
00026 
00027   }
00028 
00033   double adtimer::get_elapsed_time_and_reset(void)
00034   {
00035     gettimeofday(&tv,0);
00036     //std::cout << tv.tv_sec << " " << tv.tv_usec << std::endl;
00037     int nsec=0; 
00038     int nusec=0; 
00039     if ( tv.tv_usec< tvold.tv_usec)
00040     {
00041       nsec=tv.tv_sec-tvold.tv_sec-1;         
00042       nusec=tv.tv_usec-tvold.tv_usec+1000000;        
00043     }
00044     else
00045     {
00046       nsec=tv.tv_sec-tvold.tv_sec;         
00047       nusec=tv.tv_usec-tvold.tv_usec;        
00048     }
00049     tvold.tv_sec=tv.tv_sec;        
00050     tvold.tv_usec=tv.tv_usec;        
00051     return 1000.*nsec+nusec/1000.;
00052   }
00053 
00058   double adtimer::get_elapsed_time(void)
00059   {
00060     int nsec=0; 
00061     int nusec=0; 
00062     gettimeofday(&tv,0);
00063     //std::cout << tv.tv_sec << " " << tv.tv_usec << std::endl;
00064     if ( tv.tv_usec< tvold.tv_usec)
00065     {
00066       nsec=tv.tv_sec-tvold.tv_sec-1;         
00067       nusec=tv.tv_usec-tvold.tv_usec+1000000;        
00068     }
00069     else
00070     {
00071       nsec=tv.tv_sec-tvold.tv_sec;         
00072       nusec=tv.tv_usec-tvold.tv_usec;        
00073     }
00074     return 1000.*nsec+nusec/1000.;
00075   }
00076 
00077 #else
00078 #include <windows.h>
00079 
00084   adtimer::adtimer (void)
00085   {
00086     t=GetCurrentTime(); 
00087     told=t;
00088   }
00089 
00094   double adtimer::get_elapsed_time_and_reset(void)
00095   {
00096     t=GetCurrentTime(); 
00097     //std::cout << tv.tv_sec << " " << tv.tv_usec << std::endl;
00098     double diff=t-told;
00099     told=t;
00100     return diff;
00101   }
00102 
00107   double adtimer::get_elapsed_time(void)
00108   {
00109     t=GetCurrentTime(); 
00110     //std::cout << tv.tv_sec << " " << tv.tv_usec << std::endl;
00111     double diff=t-told;
00112     return diff;
00113   }
00114 
00115 #endif