felipealmeida pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=1eafe1d16acfa77819b33552cce140e83511c7ad

commit 1eafe1d16acfa77819b33552cce140e83511c7ad
Author: Felipe Magno de Almeida <[email protected]>
Date:   Mon May 30 17:01:40 2016 -0300

    eina: Add non-allocated version to benchmark
---
 src/benchmarks/eina/eina_bench_promise.c | 79 ++++++++++++++++++++++++++++++--
 1 file changed, 75 insertions(+), 4 deletions(-)

diff --git a/src/benchmarks/eina/eina_bench_promise.c 
b/src/benchmarks/eina/eina_bench_promise.c
index 00d55cc..0d1afc5 100644
--- a/src/benchmarks/eina/eina_bench_promise.c
+++ b/src/benchmarks/eina/eina_bench_promise.c
@@ -334,6 +334,71 @@ eina_bench_promise_pointer_value_set_after_then_pooled(int 
request)
    eina_shutdown();
 }
 
+static void
+eina_bench_promise_pointer_value_set_before_then_non_alloc(int request)
+{
+   const char *tmp;
+   unsigned int j;
+   int i;
+
+   eina_init();
+
+   mempool = eina_mempool_add("chained_mempool", "", NULL, sizeof(struct 
value_type), 10);
+   assert(mempool != NULL);
+
+   for (j = 0; j != 200; ++j)
+      for (i = 0; i != request; ++i)
+        {
+           Eina_Promise_Owner* owner = eina_promise_default_add(sizeof(struct 
value_type*));
+           Eina_Promise* promise = eina_promise_owner_promise_get(owner);
+
+           struct value_type v = {0,0,0,0};
+           *(struct value_type**)eina_promise_owner_buffer_get(owner) = &v;
+
+           eina_promise_then(promise, &pointer_cb, NULL, NULL);
+           eina_promise_owner_value_set(owner, NULL, &indirect_mempool_free);
+        }
+
+   /* Suppress warnings as we really don't want to do anything. */
+   (void) tmp;
+
+   eina_mempool_del(mempool);
+   
+   eina_shutdown();
+}
+
+static void
+eina_bench_promise_pointer_value_set_after_then_non_alloc(int request)
+{
+   const char *tmp;
+   unsigned int j;
+   int i;
+
+   eina_init();
+
+   mempool = eina_mempool_add("chained_mempool", "", NULL, sizeof(struct 
value_type), 10);
+   assert(mempool != NULL);
+
+   for (j = 0; j != 200; ++j)
+      for (i = 0; i != request; ++i)
+        {
+           Eina_Promise_Owner* owner = eina_promise_default_add(sizeof(struct 
value_type*));
+           Eina_Promise* promise = eina_promise_owner_promise_get(owner);
+
+           struct value_type v = {0,0,0,0};
+           *(struct value_type**)eina_promise_owner_buffer_get(owner) = &v;
+
+           eina_promise_owner_value_set(owner, NULL, &indirect_mempool_free);
+           eina_promise_then(promise, &pointer_cb, NULL, NULL);
+        }
+
+   /* Suppress warnings as we really don't want to do anything. */
+   (void) tmp;
+
+   eina_mempool_del(mempool);
+   eina_shutdown();
+}
+
 void eina_bench_promise(Eina_Benchmark *bench)
 {
    eina_benchmark_register(bench, "promise synchronous then",
@@ -351,16 +416,22 @@ void eina_bench_promise(Eina_Benchmark *bench)
    eina_benchmark_register(bench, "promise no copy value set before then",
                            EINA_BENCHMARK(
                               
eina_bench_promise_no_copy_value_set_before_then), 100, 20100, 500);
+   eina_benchmark_register(bench, "promise pointer value set after then 
mempool",
+                           EINA_BENCHMARK(
+                              
eina_bench_promise_pointer_value_set_after_then_pooled), 100, 20100, 500);
+   eina_benchmark_register(bench, "promise pointer value set before then 
mempool",
+                           EINA_BENCHMARK(
+                              
eina_bench_promise_pointer_value_set_before_then_pooled), 100, 20100, 500);
    eina_benchmark_register(bench, "promise pointer value set after then",
                            EINA_BENCHMARK(
                               
eina_bench_promise_pointer_value_set_after_then), 100, 20100, 500);
    eina_benchmark_register(bench, "promise pointer value set before then",
                            EINA_BENCHMARK(
                               
eina_bench_promise_pointer_value_set_before_then), 100, 20100, 500);
-   eina_benchmark_register(bench, "promise pointer value set after then 
mempool",
+   eina_benchmark_register(bench, "promise pointer value set after then non 
alloc",
                            EINA_BENCHMARK(
-                              
eina_bench_promise_pointer_value_set_after_then_pooled), 100, 20100, 500);
-   eina_benchmark_register(bench, "promise pointer value set before then 
mempool",
+                              
eina_bench_promise_pointer_value_set_after_then_non_alloc), 100, 20100, 500);
+   eina_benchmark_register(bench, "promise pointer value set before then non 
alloc",
                            EINA_BENCHMARK(
-                              
eina_bench_promise_pointer_value_set_before_then_pooled), 100, 20100, 500);
+                              
eina_bench_promise_pointer_value_set_before_then_non_alloc), 100, 20100, 500);
 }

-- 


Reply via email to