00001 // --------------------------------------------------------------------------- 00002 // 00003 // This file is part of PermLib. 00004 // 00005 // Copyright (c) 2009-2010 Thomas Rehn <thomas@carmen76.de> 00006 // All rights reserved. 00007 // 00008 // Redistribution and use in source and binary forms, with or without 00009 // modification, are permitted provided that the following conditions 00010 // are met: 00011 // 1. Redistributions of source code must retain the above copyright 00012 // notice, this list of conditions and the following disclaimer. 00013 // 2. Redistributions in binary form must reproduce the above copyright 00014 // notice, this list of conditions and the following disclaimer in the 00015 // documentation and/or other materials provided with the distribution. 00016 // 3. The name of the author may not be used to endorse or promote products 00017 // derived from this software without specific prior written permission. 00018 // 00019 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 00020 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00021 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 00022 // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 00023 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 00024 // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00025 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00026 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00027 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 00028 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00029 // 00030 // --------------------------------------------------------------------------- 00031 00032 00033 #ifndef TIMER_H_ 00034 #define TIMER_H_ 00035 00036 #include <cstdio> 00037 #include <unistd.h> 00038 #include <sys/resource.h> 00039 00040 double processUserTime() { 00041 struct rusage usage; 00042 int ret = getrusage( RUSAGE_SELF, &usage); 00043 if (!ret) { 00044 return double(usage.ru_utime.tv_sec) 00045 + double(usage.ru_utime.tv_usec) / 1000000.0; 00046 } 00047 return 0.0; 00048 } 00049 00050 uint processSize() { 00051 char buf[30]; 00052 snprintf(buf, 30, "/proc/%u/statm", (unsigned)getpid()); 00053 FILE* pf = fopen(buf, "r"); 00054 if (pf) { 00055 unsigned size; // total program size 00056 //unsigned resident;// resident set size 00057 //unsigned share;// shared pages 00058 //unsigned text;// text (code) 00059 //unsigned lib;// library 00060 //unsigned data;// data/stack 00061 //unsigned dt;// dirty pages (unused in Linux 2.6) 00062 if (fscanf(pf, "%u" /* %u %u %u %u %u"*/, &size/*, &resident, &share, &text, &lib, &data*/) == EOF) 00063 size = 0; 00064 fclose(pf); 00065 return size; 00066 } 00067 fclose(pf); 00068 return -1; 00069 } 00070 00071 // ---------- 00072 00073 void header() 00074 { 00075 } 00076 00077 #endif // - TIMER_H_