PCMTimer_impl.h
Go to the documentation of this file.00001 00002 // 00003 // This source file is a part of ParCompMark 00004 // Parallel Compositing Benchmark Framework 00005 // 00006 // for latest info see http://parcompmark.sourceforge.net 00007 00008 // 00009 // Copyright (C) 2006 IT2 ParCompMark Dev. Team 00010 // 00011 // This program is free software; you can redistribute it and/or 00012 // modify it under the terms of the GNU General Public License 00013 // as published by the Free Software Foundation; either version 2 00014 // of the License, or (at your option) any later version. 00015 // 00016 // This program is distributed in the hope that it will be useful, 00017 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00019 // GNU General Public License for more details. 00020 // 00021 // You should have received a copy of the GNU General Public License 00022 // along with this program; if not, write to the Free Software 00023 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00024 00027 00028 // 00029 // Getters & setters 00030 // 00031 00032 inline const Real & Timer::getTimeCorrection() 00033 { 00034 return mTimeCorrection; 00035 } 00036 00037 /*-------------------------------------------------------------------------*/ 00038 00039 inline void Timer::setTimeCorrection(const Real & timecorrection) 00040 { 00041 mTimeCorrection = timecorrection; 00042 mStartTime = getUncorrectedSystemTime(); 00043 } 00044 00045 /*-------------------------------------------------------------------------*/ 00046 00047 inline const Real & Timer::getStartTime() 00048 { 00049 return mStartTime; 00050 } 00051 00052 /*-------------------------------------------------------------------------*/ 00053 00054 // 00055 // Class methods 00056 // 00057 00058 inline Real Timer::getSystemTime() 00059 { 00060 return getUncorrectedSystemTime() + mTimeCorrection; 00061 } 00062 00063 /*----------------------------------------------------------------------*/ 00064 00065 inline Real Timer::getApplicationTime() 00066 { 00067 return getUncorrectedSystemTime() - mStartTime; 00068 } 00069 00070 /*----------------------------------------------------------------------*/ 00071 00072 inline Real Timer::getUncorrectedSystemTime() 00073 { 00074 struct timeval tv; 00075 struct timezone tz; 00076 00077 gettimeofday(&tv, &tz); 00078 return tv.tv_sec * 1.0 + tv.tv_usec * 0.000001; 00079 } 00080 00081 /*----------------------------------------------------------------------*/ 00082 00083 inline void Timer::sleep(const Real time) 00084 { 00085 usleep((__useconds_t) (time * 1.0e6)); 00086 } 00087 00088 /*----------------------------------------------------------------------*/