1// timer.h -- helper class for time accounting -*- C++ -*- 2 3// Copyright 2009 Free Software Foundation, Inc. 4// Written by Rafael Avila de Espindola <espindola@google.com>. 5 6// This file is part of gold. 7 8// This program is free software; you can redistribute it and/or modify 9// it under the terms of the GNU General Public License as published by 10// the Free Software Foundation; either version 3 of the License, or 11// (at your option) any later version. 12 13// This program is distributed in the hope that it will be useful, 14// but WITHOUT ANY WARRANTY; without even the implied warranty of 15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16// GNU General Public License for more details. 17 18// You should have received a copy of the GNU General Public License 19// along with this program; if not, write to the Free Software 20// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 21// MA 02110-1301, USA. 22 23#ifndef GOLD_TIMER_H 24#define GOLD_TIMER_H 25 26namespace gold 27{ 28 29class Timer 30{ 31 public: 32 // Used to report time statistics. All fields are in milliseconds. 33 struct TimeStats 34 { 35 /* User time in this process. */ 36 long user; 37 38 /* System time in this process. */ 39 long sys; 40 41 /* Wall clock time. */ 42 long wall; 43 }; 44 45 Timer(); 46 47 // Return the stats since start was called. 48 TimeStats 49 get_elapsed_time(); 50 51 // Start couting the time. 52 void 53 start(); 54 55 private: 56 // This class cannot be copied. 57 Timer(const Timer&); 58 Timer& operator=(const Timer&); 59 60 // Write the current time infortamion. 61 static void 62 get_time(TimeStats* now); 63 64 // The time of the last call to start. 65 TimeStats start_time_; 66}; 67 68} 69#endif 70