02-22-2005
find CPU Time for a function (subsecond precision)
Hi,
I need to time a certain function in my C/C++ code and I am experiencing some difficulties. I timed it using wallclock time so I know that it takes approximately 500-600 microseconds with
gettimeofday(&start, NULL);
// my function call
gettimeofday(&end, NULL);
answer = (end.tv_sec - start.tv_sec)*1000000 + (end.tv_usec - start.tv_usec);
What I actually need is to get the CPU time used for this function. Unfortunately, the widely used clock() function does not give me a good precision because well... clock_t/CLOCKS_PER_SEC is in seconds.
Anyone had a similar problem? Thank you in advance.
Note: I couldn't find anything relevant on the Unix man pages or anywhere on this forum but it's always possible that I have overlooked...
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi,
I have a log file that has the date in this format "2006-05-30_13:14:04,256". I need to find the time difference between two log entries in milliseconds.
How to achieve this in AWK/GAWK script? :confused: (2 Replies)
Discussion started by: omprasad
2 Replies
2. HP-UX
Hi,
I am loking for a c++ function that calculate CPU time under HP-UX
Thank you (1 Reply)
Discussion started by: limame
1 Replies
3. UNIX for Advanced & Expert Users
Hi,
I have problem like everyday i have to check which process consuming more cpu time. I have done it manually using top command..
Is there any script which will tell the exact process name which will consuming more time. I am using hpux. (1 Reply)
Discussion started by: rajesh08
1 Replies
4. Shell Programming and Scripting
I thought a program's elapsed time, some program language call it real time, should be the time of a program from start to finish. And it should be equal or longer than CPU time. This is true for the most of the cases. However, I do see some of my programs CPU time is longer than Elapsed time. ... (1 Reply)
Discussion started by: visio2000
1 Replies
5. UNIX for Advanced & Expert Users
Hi ,
How can I get the last access time of a file upto the precesion of seconds in Unix.
I cannot use stat as this is not supported. (10 Replies)
Discussion started by: kanus
10 Replies
6. UNIX Desktop Questions & Answers
Hi i am a newbie thanks in advance
i have a process which keeps on running but doesn't use any CPU time and doesn't do the functionality which it is suppose to do .
If i kill the process and start the process again then the process kicks in and starts using CPU time and continues to do its... (3 Replies)
Discussion started by: nick1982
3 Replies
7. Solaris
We are using JAVA program and strange thing is it takes 100% CPU when not in use.
The program function is to stream a file on output port (one direction). It checks one directory and when there is a file in it, starts.
While it is streaming the CPU usage is normal, about 20%.
But, if... (9 Replies)
Discussion started by: orange47
9 Replies
8. Shell Programming and Scripting
Hi ,
I am trying to :wall: my head while scripting ..I am really new to this stuff , never did it before :( .
how to find cpu's system high time and user time high in a script??
thanks , help would be appreciated !
:) (9 Replies)
Discussion started by: sushwey
9 Replies
9. UNIX for Advanced & Expert Users
Hi Experts,
If a thread running on CPU needs some data from RAM (from near or far RAM) it requests the data (this moment of time is t0) and gets it in moment of time in t1, and continues his work.
Between t0 and t1, while data is transferring from RAM, the thread is goes out from CPU? Is the... (2 Replies)
Discussion started by: sant
2 Replies
10. Linux
Hi All,
Am very new to Linux and unix ...need below help .
need to list of process consuming more than 40% cpu and which are older than 10 days of a particular user ....
Thanks
V (4 Replies)
Discussion started by: venky456
4 Replies
LEARN ABOUT DEBIAN
gguslumber
ggCurTime(3) GGI ggCurTime(3)
NAME
ggCurTime, ggUSleep, ggUSlumber - Portable Time Routines
SYNOPSIS
#include <ggi/gg.h>
int ggCurTime(struct timeval *tv);
int ggUSleep(int32_t usecs);
void ggUSlumber(int32_t usecs);
DESCRIPTION
ggCurTime fills the timeval structure pointed to by tv with the current time to the best precision available on the executing platform.
ggUSleep sleeps for at least usecs microseconds, to the best precision available on the executing platform, but may be woken up by a signal
or other unspecified condition. It is not guaranteed that ggUSleep will wake up prematurely for any specific reason. It is mainly useful
for points where the main objective is to avoid using CPU resources, not to perform accurate timing.
ggUSlumber does the same thing as ggUSleep, but is guaranteed not to return until the allotted time has elapsed. It is slightly less effi-
cient than ggUSleep with reguard to CPU utilization.
All times represent wall-clock (real, versus processor) times.
The above routines are often simple macros rather than functions, and as such should not be used by reference.
The above functions are threadsafe, but are not guaranteed to be safe to use in a thread that may be cancelled during their execution.
They are also not guaranteed to be safe to use in special contexts such as LibGG task handlers, signal handlers and asyncronous procedure
calls.
RETURN VALUE
ggCurTime returns GGI_OK on success, or a negative value on failure. On Windows, this function will never report a failure. On platforms
where gettimeofday(2) is used, the error code is the one returned by gettimeofday.
ggUSleep returns GGI_OK when the alloted time interval has elapsed, or a non-zero value if the sleep was interrupted. On platforms where
usleep(3) is used, the error code is the one return by usleep.
EXAMPLE
A demonstration on how to measure a framerate.
struct timeval start, stop, diff;
long time_of_frame = 1;
int framerate;
...
ggCurTime(&start);
/* do something here, i.e. render and display a frame */
ggCurTime(&stop);
diff.tv_sec = stop_tv.tv_sec - start_tv.tv_sec;
diff.tv_usec = stop_tv.tv_usec - start_tv.tv_usec;
if (diff.tv_usec < 0) {
diff.tv_usec += 1000000;
diff.tv_sec--;
}
time_of_frame = diff.tv_sec * 1000 + diff.tv_usec / 1000;
if (time_of_frame == 0)
time_of_frame = 1; /* CPU too fast? */
printf("framerate: %i
", 1000 / time_of_framerate);
SEE ALSO
gettimeofday(2), usleep(3)
libgg-1.0.x 2005-08-26 ggCurTime(3)