forked from enlightenment/efl
Add init/shutdown to benchmark and fix its users.
SVN revision: 36073
This commit is contained in:
parent
ac21afc37f
commit
ce16573cb3
|
@ -37,6 +37,9 @@ typedef struct _Eina_Benchmark Eina_Benchmark;
|
|||
typedef void (*Eina_Benchmark_Specimens)(int request);
|
||||
#define EINA_BENCHMARK(Function) ((Eina_Benchmark_Specimens)Function)
|
||||
|
||||
EAPI int eina_benchmark_init(void);
|
||||
EAPI int eina_benchmark_shutdown(void);
|
||||
|
||||
EAPI Eina_Benchmark *eina_benchmark_new(const char *name, const char *run);
|
||||
EAPI void eina_benchmark_free(Eina_Benchmark *bench);
|
||||
|
||||
|
|
|
@ -61,6 +61,8 @@ struct _Eina_Benchmark
|
|||
Eina_Inlist *runs;
|
||||
};
|
||||
|
||||
static int _eina_benchmark_count = 0;
|
||||
|
||||
/**
|
||||
* @endcond
|
||||
*/
|
||||
|
@ -89,13 +91,46 @@ struct _Eina_Benchmark
|
|||
* @{
|
||||
*/
|
||||
|
||||
EAPI int
|
||||
eina_benchmark_init(void)
|
||||
{
|
||||
_eina_benchmark_count++;
|
||||
|
||||
if (_eina_benchmark_count > 1) return _eina_benchmark_count;
|
||||
|
||||
eina_error_init();
|
||||
eina_array_init();
|
||||
eina_counter_init();
|
||||
|
||||
return _eina_benchmark_count;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
eina_benchmark_shutdown(void)
|
||||
{
|
||||
_eina_benchmark_count--;
|
||||
|
||||
if (_eina_benchmark_count != 0) return _eina_benchmark_count;
|
||||
|
||||
eina_counter_shutdown();
|
||||
eina_array_shutdown();
|
||||
eina_error_shutdown();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
EAPI Eina_Benchmark *
|
||||
eina_benchmark_new(const char *name, const char *run)
|
||||
{
|
||||
Eina_Benchmark *new;
|
||||
|
||||
eina_error_set(0);
|
||||
new = calloc(1, sizeof (Eina_Benchmark));
|
||||
if (!new) return NULL;
|
||||
if (!new)
|
||||
{
|
||||
eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
new->name = name;
|
||||
new->run = run;
|
||||
|
@ -127,8 +162,13 @@ eina_benchmark_register(Eina_Benchmark *bench, const char *name, Eina_Benchmark_
|
|||
|
||||
if (!bench) return ;
|
||||
|
||||
eina_error_set(0);
|
||||
run = calloc(1, sizeof (Eina_Run));
|
||||
if (!run) return ;
|
||||
if (!run)
|
||||
{
|
||||
eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
|
||||
return ;
|
||||
}
|
||||
|
||||
run->cb = bench_cb;
|
||||
run->name = name;
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
#include "eina_stringshare.h"
|
||||
#include "eina_list.h"
|
||||
#include "eina_array.h"
|
||||
#include "eina_counter.h"
|
||||
#include "eina_benchmark.h"
|
||||
|
||||
/*============================================================================*
|
||||
* Global *
|
||||
|
@ -44,6 +46,8 @@ eina_init(void)
|
|||
eina_stringshare_init();
|
||||
eina_list_init();
|
||||
eina_array_init();
|
||||
eina_counter_init();
|
||||
eina_benchmark_init();
|
||||
|
||||
return r;
|
||||
}
|
||||
|
@ -53,6 +57,8 @@ eina_shutdown(void)
|
|||
{
|
||||
int r;
|
||||
|
||||
eina_benchmark_shutdown();
|
||||
eina_counter_shutdown();
|
||||
eina_array_shutdown();
|
||||
eina_list_shutdown();
|
||||
eina_stringshare_shutdown();
|
||||
|
|
|
@ -46,6 +46,8 @@ main(int argc, char **argv)
|
|||
|
||||
if (argc != 2) return -1;
|
||||
|
||||
eina_benchmark_init();
|
||||
|
||||
for (i = 0; etc[i].bench_case != NULL; ++i)
|
||||
{
|
||||
test = eina_benchmark_new(etc[i].bench_case, argv[1]);
|
||||
|
@ -71,5 +73,7 @@ main(int argc, char **argv)
|
|||
|
||||
eina_bench_e17();
|
||||
|
||||
eina_benchmark_shutdown();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue