(root)/
binutils-2.41/
gold/
timer.h
       1  // timer.h -- helper class for time accounting   -*- C++ -*-
       2  
       3  // Copyright (C) 2009-2023 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  
      26  namespace gold
      27  {
      28  
      29  class 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    // Return the stats for pass N (0 <= N <= 2).
      52    TimeStats
      53    get_pass_time(int n);
      54  
      55    // Start counting the time.
      56    void
      57    start();
      58  
      59    // Record the time used by pass N (0 <= N <= 2).
      60    void
      61    stamp(int n);
      62  
      63   private:
      64    // This class cannot be copied.
      65    Timer(const Timer&);
      66    Timer& operator=(const Timer&);
      67  
      68    // Write the current time information.
      69    static void
      70    get_time(TimeStats* now);
      71  
      72    // The time of the last call to start.
      73    TimeStats start_time_;
      74  
      75    // Times for each pass.
      76    TimeStats pass_times_[3];
      77  };
      78  
      79  }
      80  #endif