|
Packit |
b40e2e |
/* clock_of.c: to measure the execution time of a program. */
|
|
Packit |
b40e2e |
/* 2002/08 kmatsui */
|
|
Packit |
b40e2e |
|
|
Packit |
b40e2e |
#include "stdio.h"
|
|
Packit |
b40e2e |
#include "stdlib.h"
|
|
Packit |
b40e2e |
#include "string.h"
|
|
Packit |
b40e2e |
#include "time.h"
|
|
Packit |
b40e2e |
|
|
Packit |
b40e2e |
void usage( void);
|
|
Packit |
b40e2e |
|
|
Packit |
b40e2e |
int main( int argc, char ** argv)
|
|
Packit |
b40e2e |
{
|
|
Packit |
b40e2e |
char command[ BUFSIZ];
|
|
Packit |
b40e2e |
char **arg, *buf;
|
|
Packit |
b40e2e |
long start_time, passed_time;
|
|
Packit |
b40e2e |
int ret;
|
|
Packit |
b40e2e |
|
|
Packit |
b40e2e |
if (argc < 2)
|
|
Packit |
b40e2e |
usage();
|
|
Packit |
b40e2e |
ret = -1;
|
|
Packit |
b40e2e |
arg = argv;
|
|
Packit |
b40e2e |
buf = command;
|
|
Packit |
b40e2e |
while (*++arg) {
|
|
Packit |
b40e2e |
sprintf( buf, "%s ", *arg);
|
|
Packit |
b40e2e |
buf += strlen( buf);
|
|
Packit |
b40e2e |
}
|
|
Packit |
b40e2e |
fprintf( stderr, "%s\n", command);
|
|
Packit |
b40e2e |
start_time = clock();
|
|
Packit |
b40e2e |
ret = system( command);
|
|
Packit |
b40e2e |
if (ret == 0) {
|
|
Packit |
b40e2e |
passed_time = clock() - start_time;
|
|
Packit |
b40e2e |
fprintf( stderr, "%ld ticks passed (%f seconds).\n"
|
|
Packit |
b40e2e |
, passed_time, (double) passed_time / CLOCKS_PER_SEC);
|
|
Packit |
b40e2e |
} else {
|
|
Packit |
b40e2e |
fprintf( stderr, "Command execution error! (status: %d)\n", ret);
|
|
Packit |
b40e2e |
}
|
|
Packit |
b40e2e |
|
|
Packit |
b40e2e |
return 0;
|
|
Packit |
b40e2e |
}
|
|
Packit |
b40e2e |
|
|
Packit |
b40e2e |
void usage( void)
|
|
Packit |
b40e2e |
{
|
|
Packit |
b40e2e |
fputs( "usage: clock_of <command> [<args>]\n", stderr);
|
|
Packit |
b40e2e |
exit( 1);
|
|
Packit |
b40e2e |
}
|