// Author: Daniel
// Date: Apr.18, 2008
//Interface:
// void get_start_time();
// void get_end_time();
// void time_print(module_name);
// void print_once(void);
// void write_to_file(char* file_name, void * buffer, size_t count);
//
////////////////////////////////////////////////////////
#include <sys/time.h>
#include <stdio.h>
static struct timeval start_time, end_time, used_time, total_used_time;
static unsigned int count = 0;
void get_start_time(void)
{
gettimeofday(&start_time, NULL);
}
void get_end_time(void)
{
gettimeofday(&end_time, NULL);
}
void time_print(char * str)
{
printf("%s",str);
printf("TIME(Start:%d.%06ds, ", start_time.tv_sec, start_time.tv_usec);
printf("End:%d.%06ds, ", end_time.tv_sec,end_time.tv_usec);
if(end_time.tv_usec >= start_time.tv_usec){
used_time.tv_sec = end_time.tv_sec - start_time.tv_sec;
used_time.tv_usec = end_time.tv_usec - start_time.tv_usec;
printf("Used:%d.%06ds, ", used_time.tv_sec, used_time.tv_usec);
}
else{
used_time.tv_sec = end_time.tv_sec - start_time.tv_sec - 1;
used_time.tv_usec = 999999 - (start_time.tv_usec - end_time.tv_usec);
printf("Used:%d.%06ds, ", used_time.tv_sec, used_time.tv_usec);
}
++count;
total_used_time.tv_sec += used_time.tv_sec;
total_used_time.tv_usec += used_time.tv_usec;
printf("Average:%d.%06ds)/r", total_used_time.tv_sec / count,
total_used_time.tv_usec / count);
fflush(stdout);
}
//---------
void print_once(void)
{
static int print_once_flag = 1;
if(1 == print_once_flag) { printf("xxx/n"); print_once_flag = 0; }
}
//---------
#include <fcntl.h>
// O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_TRUNC, O_APPEND
void write_to_file(char* file_name, void * buffer, size_t count)
{
int file_id = 0, file_length = 0;
file_id = open(file_name, O_WRONLY | O_CREAT);
file_length = write(file_id, buffer, count);
close(file_id);
printf("(%d) bytes written to file:%s /n", file_length, file_name );
}
////////////////////////////////////////////////////////////////
// Date: Apr.18, 2008
//Interface:
// void get_start_time();
// void get_end_time();
// void time_print(module_name);
// void print_once(void);
// void write_to_file(char* file_name, void * buffer, size_t count);
//
////////////////////////////////////////////////////////
#include <sys/time.h>
#include <stdio.h>
static struct timeval start_time, end_time, used_time, total_used_time;
static unsigned int count = 0;
void get_start_time(void)
{
gettimeofday(&start_time, NULL);
}
void get_end_time(void)
{
gettimeofday(&end_time, NULL);
}
void time_print(char * str)
{
printf("%s",str);
printf("TIME(Start:%d.%06ds, ", start_time.tv_sec, start_time.tv_usec);
printf("End:%d.%06ds, ", end_time.tv_sec,end_time.tv_usec);
if(end_time.tv_usec >= start_time.tv_usec){
used_time.tv_sec = end_time.tv_sec - start_time.tv_sec;
used_time.tv_usec = end_time.tv_usec - start_time.tv_usec;
printf("Used:%d.%06ds, ", used_time.tv_sec, used_time.tv_usec);
}
else{
used_time.tv_sec = end_time.tv_sec - start_time.tv_sec - 1;
used_time.tv_usec = 999999 - (start_time.tv_usec - end_time.tv_usec);
printf("Used:%d.%06ds, ", used_time.tv_sec, used_time.tv_usec);
}
++count;
total_used_time.tv_sec += used_time.tv_sec;
total_used_time.tv_usec += used_time.tv_usec;
printf("Average:%d.%06ds)/r", total_used_time.tv_sec / count,
total_used_time.tv_usec / count);
fflush(stdout);
}
//---------
void print_once(void)
{
static int print_once_flag = 1;
if(1 == print_once_flag) { printf("xxx/n"); print_once_flag = 0; }
}
//---------
#include <fcntl.h>
// O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_TRUNC, O_APPEND
void write_to_file(char* file_name, void * buffer, size_t count)
{
int file_id = 0, file_length = 0;
file_id = open(file_name, O_WRONLY | O_CREAT);
file_length = write(file_id, buffer, count);
close(file_id);
printf("(%d) bytes written to file:%s /n", file_length, file_name );
}
////////////////////////////////////////////////////////////////
本文介绍了一种用于测量程序运行时间的方法,并提供了一个实用的文件写入函数。通过`get_start_time`和`get_end_time`函数记录程序运行的时间戳,利用`time_print`函数打印出程序运行的具体时间及平均耗时。此外,还实现了一个能够将缓冲区内容写入指定文件的`write_to_file`函数。
845

被折叠的 条评论
为什么被折叠?



