mirror of
https://gitee.com/apaki/unicstl.git
synced 2026-05-28 22:54:19 +08:00
80 lines
1.8 KiB
C
80 lines
1.8 KiB
C
/**
|
|
* @file main.c
|
|
* @author wenjf (Orig5826@163.com)
|
|
* @brief
|
|
* @version 0.1
|
|
* @date 2026-05-12
|
|
*
|
|
* @copyright Copyright (c) 2026
|
|
*
|
|
*/
|
|
#include "perf.h"
|
|
|
|
#define PERF_FORMAT_HEAD "%-24s %-4s %-6s %-12s\n"
|
|
#define PERF_FORMAT_DATA "%-24s T%-3d %-6d %8.3f ms\n"
|
|
|
|
void perf_init(void)
|
|
{
|
|
printf(PERF_FORMAT_HEAD, "function", " id ", " loop", " time(ms)");
|
|
printf(PERF_FORMAT_HEAD, "--------", "----", "------", "------------");
|
|
}
|
|
|
|
void perf_begin(struct _perf_args* args)
|
|
{
|
|
timespec_get(&args->start, TIME_UTC);
|
|
}
|
|
|
|
double calc_elapsed(struct timespec start, struct timespec end)
|
|
{
|
|
return (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec) / 1e9;
|
|
}
|
|
|
|
void perf_end(struct _perf_args* args)
|
|
{
|
|
timespec_get(&args->end, TIME_UTC);
|
|
|
|
args->elapsed = calc_elapsed(args->start, args->end);
|
|
printf(PERF_FORMAT_DATA, args->name, args->id, 1, 1000 * args->elapsed);
|
|
}
|
|
|
|
void perf_print(struct _perf_args* args)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
#if 0
|
|
void perf_run_avg(perf_func_t perf_func, const char *func_name, size_t count)
|
|
{
|
|
double time_used = 0;
|
|
double time_total = 0;
|
|
|
|
for(size_t i = 0; i < count; i++)
|
|
{
|
|
perf_start();
|
|
perf_func();
|
|
perf_end();
|
|
|
|
time_used = (time_end.tv_sec - time_start.tv_sec) + (time_end.tv_nsec - time_start.tv_nsec) / 1e9;
|
|
time_total += time_used;
|
|
}
|
|
printf(PERF_FORMAT_DATA, func_name, "AVG", 1, 1000 * time_total/count);
|
|
}
|
|
|
|
void perf_run_loop(perf_func_t perf_func, const char *func_name, size_t loop)
|
|
{
|
|
double time_used = 0;
|
|
|
|
perf_start();
|
|
for(size_t i = 0; i < loop; i++)
|
|
{
|
|
perf_func();
|
|
}
|
|
perf_end();
|
|
|
|
time_used = (time_end.tv_sec - time_start.tv_sec) + (time_end.tv_nsec - time_start.tv_nsec) / 1e9;
|
|
printf(PERF_FORMAT_DATA, func_name, "LOOP", loop, 1000 * time_used);
|
|
}
|
|
#endif
|