/*
note: This program is used to run a child program and caculate the time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ date what to do @
@ 2010/01/08 create new file @
@ @
@ @
@ @
@ @
@ @
@ @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
*/
#ifdef WIN
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <signal.h>
#include <errno.h>
#include <time.h>
void testfile();
int main(int arg, char **args){
/* declare */
clock_t startTime = 0;
clock_t endTime = 0;
char cmd_p[4096]; /* comand buffer */
int i;
/* check parameter and make cmd */
if(arg == 1){
goto USAGE_ERROR;
}else{
cmd_p[0] = 0;
for(i = 1; i < arg; i++){
strcat(cmd_p, args[i]);
strcat(cmd_p, " ");
}
}
printf("Child program is:\n%s\n", cmd_p);
/* get start time */
startTime = clock();
/* run child program */
system(cmd_p);
/* caculate total time */
endTime = clock();
printf("start time: %d (ms)\tend time: %d (ms)\n", startTime, endTime);
printf("Total time cost: %d (ms)\n", endTime-startTime);
return 0;
USAGE_ERROR:
printf("USAGE: runWithTime <child program cmd line>\n");
return 1;
}
#else
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#define USTOMS(t)(t/1000)
void testfile();
int main(int arg, char **args){
/* declare */
struct timeval start,stop,diff;
char cmd_p[4096]; /* comand buffer */
int i;
/* check parameter and make cmd */
if(arg == 1){
goto USAGE_ERROR;
}else{
cmd_p[0] = 0;
for(i = 1; i < arg; i++){
strcat(cmd_p, args[i]);
strcat(cmd_p, " ");
}
}
printf("Child program is:\n%s\n", cmd_p);
gettimeofday(&start,0);
/* run child program */
system(cmd_p);
gettimeofday(&stop,0);
timeval_subtract(&diff,&start,&stop);
printf("Total time cost: %d (ms)\n",diff.tv_sec*1000+USTOMS(diff.tv_usec));
return 0;
USAGE_ERROR:
printf("USAGE: runWithTime <child program cmd line>\n");
return 1;
}
int timeval_subtract(struct timeval* result, struct timeval* x, struct timeval* y){
int nsec;
if( x->tv_sec>y->tv_sec )
return -1;
if((x->tv_sec==y->tv_sec)&&(x->tv_usec>y->tv_usec))
return -1;
result->tv_sec=(y->tv_sec-x->tv_sec);
result->tv_usec=(y->tv_usec-x->tv_usec);
if(result->tv_usec<0)
{
result->tv_sec--;
result->tv_usec+=1000000;
}
return 0;
}
#endif
void testfile(){
int i;
char buffer[4296]; /* buffer */
FILE *fp;
memset(buffer, 0, sizeof(buffer));
for(i = 0; i < 4166; i++){
buffer[i] = 'a';
}
for(i = 0; i < 25617; i++){
fp = fopen("test.txt","a");
if(NULL == fp)return;
fputs(buffer, fp);
fclose(fp);
}
}
打印程序执行时间的小工具
最新推荐文章于 2022-11-03 07:00:00 发布