source: branches/with_autoconf/src/usage.h @ 49

Last change on this file since 49 was 1, checked in by buchmann, 17 years ago

Initial import from CVS repository

File size: 2.5 KB
Line 
1/*------------------------------------------------------------\
2|                                                             |
3| Tool    :                  systemcass                       |
4|                                                             |
5| File    :                  usage.h                          |
6|                                                             |
7| Author  :                 Buchmann Richard                  |
8|                                                             |
9| Date    :                   ??_??_2005                      |
10|                                                             |
11\------------------------------------------------------------*/
12
13/*
14 * This file is part of the Disydent Project
15 * Copyright (C) Laboratoire LIP6 - Département ASIM
16 * Universite Pierre et Marie Curie
17 *
18 * Home page          : http://www-asim.lip6.fr/disydent
19 * E-mail             : mailto:richard.buchmann@lip6.fr
20 *
21 * This library is free software; you  can redistribute it and/or modify it
22 * under the terms  of the GNU Library General Public  License as published
23 * by the Free Software Foundation; either version 2 of the License, or (at
24 * your option) any later version.
25 *
26 * Disydent is distributed  in the hope  that it  will be
27 * useful, but WITHOUT  ANY WARRANTY; without even the  implied warranty of
28 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
29 * Public License for more details.
30 *
31 * You should have received a copy  of the GNU General Public License along
32 * with the GNU C Library; see the  file COPYING. If not, write to the Free
33 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
34 */
35#ifndef __USAGE_H__
36#define __USAGE_H__
37
38#include <sys/time.h>
39#include <sys/resource.h>
40#include <unistd.h>
41#include <iostream>
42
43struct usage_t {
44        unsigned int elapsed_time;
45  long         memory_size;
46        usage_t () 
47        {
48                elapsed_time = 0;
49    memory_size  = 0;
50        }
51        void start () 
52        {
53                struct rusage usage;
54                getrusage(RUSAGE_SELF, &usage);
55                elapsed_time = usage.ru_utime.tv_sec;
56                memory_size  = usage.ru_maxrss;
57        }
58        void cont () 
59        {
60                struct rusage usage;
61                getrusage(RUSAGE_SELF, &usage);
62                elapsed_time = usage.ru_utime.tv_sec - elapsed_time;
63                memory_size  = usage.ru_maxrss;
64        }
65        void stop ()
66        {
67                cont ();
68        }
69        operator unsigned int () const
70        { return elapsed_time; }       
71  long     get_memory_size () const
72  { return memory_size;  }
73        friend std::ostream& operator << (std::ostream& o, const usage_t &c)
74        {
75                return o << c.elapsed_time << "seconds";
76        }
77};
78
79#endif
80
Note: See TracBrowser for help on using the repository browser.