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);
Eina_Inlist *runs;
};
+static int _eina_benchmark_count = 0;
+
/**
* @endcond
*/
* @{
*/
+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;
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;
#include "eina_stringshare.h"
#include "eina_list.h"
#include "eina_array.h"
+#include "eina_counter.h"
+#include "eina_benchmark.h"
/*============================================================================*
* Global *
eina_stringshare_init();
eina_list_init();
eina_array_init();
+ eina_counter_init();
+ eina_benchmark_init();
return r;
}
{
int r;
+ eina_benchmark_shutdown();
+ eina_counter_shutdown();
eina_array_shutdown();
eina_list_shutdown();
eina_stringshare_shutdown();
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]);
eina_bench_e17();
+ eina_benchmark_shutdown();
+
return 0;
}