Add init/shutdown to benchmark and fix its users.

SVN revision: 36073
This commit is contained in:
Cedric BAIL 2008-09-18 10:04:46 +00:00
parent ac21afc37f
commit ce16573cb3
4 changed files with 55 additions and 2 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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();

View File

@ -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;
}