From: <no-...@en...> - 2008-08-27 17:14:37
|
Author: cedric Date: 2008-08-27 10:14:34 -0700 (Wed, 27 Aug 2008) New Revision: 35699 Modified: trunk/PROTO/eina/src/tests/Makefile.am trunk/PROTO/eina/src/tests/eina_bench_array.c trunk/PROTO/eina/src/tests/eina_bench_hash.c trunk/PROTO/eina/src/tests/eina_bench_stringshare.c Log: Add benchmark against glib so we see where we stand. Modified: trunk/PROTO/eina/src/tests/Makefile.am =================================================================== --- trunk/PROTO/eina/src/tests/Makefile.am 2008-08-27 17:13:58 UTC (rev 35698) +++ trunk/PROTO/eina/src/tests/Makefile.am 2008-08-27 17:14:34 UTC (rev 35699) @@ -9,7 +9,8 @@ -DPACKAGE_LIB_DIR=\"$(libdir)\" \ -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ -DPACKAGE_BUILD_DIR=\"`pwd`/$(top_builddir)\" \ -@CHECK_CFLAGS@ +@CHECK_CFLAGS@ \ +@GLIB_CFLAGS@ if EINA_HAVE_GLIB @@ -54,7 +55,7 @@ eina_bench_convert.c \ eina_bench_array.c -eina_bench_LDADD = $(top_builddir)/src/lib/libeina.la +eina_bench_LDADD = @GLIB_LIBS@ $(top_builddir)/src/lib/libeina.la endif Modified: trunk/PROTO/eina/src/tests/eina_bench_array.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench_array.c 2008-08-27 17:13:58 UTC (rev 35698) +++ trunk/PROTO/eina/src/tests/eina_bench_array.c 2008-08-27 17:14:34 UTC (rev 35699) @@ -25,6 +25,10 @@ #include <stdio.h> +#ifdef EINA_BENCH_HAVE_GLIB +#include <glib.h> +#endif + #include "eina_bench.h" #include "eina_array.h" #include "eina_list.h" @@ -424,6 +428,130 @@ } } +#ifdef EINA_BENCH_HAVE_GLIB +static void +eina_bench_glist_4evas_render(int request) +{ + GList *list = NULL; + GList *tmp; + Eina_Bench_Object *ebo; + int i; + int j; + + for (i = 0; i < 1000; ++i) + { + for (j = 0; j < request; ++j) + { + ebo = malloc(sizeof (Eina_Bench_Object)); + if (!ebo) continue ; + + ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE; + + list = g_list_prepend(list, ebo); + } + + if (i == 500) + { + while (list) + { + free(list->data); + list = g_list_delete_link(list, list); + } + } + else + { + if (i % 30 == 0) + { + tmp = list; + while (tmp) + { + GList *reminder = tmp; + + ebo = reminder->data; + tmp = g_list_next(tmp); + + if (ebo->keep == EINA_FALSE) + { + list = g_list_delete_link(list, reminder); + free(ebo); + } + } + } + } + + for (tmp = list; tmp; tmp = g_list_next(tmp)) + { + ebo = tmp->data; + + ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE; + } + } + + while (list) + { + free(list->data); + list = g_list_delete_link(list, list); + } +} + +static void +eina_bench_gptrarray_4evas_render(int request) +{ + GPtrArray *array = NULL; + Eina_Bench_Object *ebo; + unsigned int j; + int i; + + array = g_ptr_array_new(); + + for (i = 0; i < 1000; ++i) + { + for (j = 0; j < (unsigned int) request; ++j) + { + ebo = malloc(sizeof (Eina_Bench_Object)); + if (!ebo) continue ; + + ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE; + + g_ptr_array_add(array, ebo); + } + + if (i == 500) + { + for (j = 0; j < array->len; ++j) + free(g_ptr_array_index(array, j)); + g_ptr_array_remove_range(array, 0, array->len); + } + else + { + if (i % 30 == 0) + { + for (j = 0; j < array->len; ) + { + ebo = g_ptr_array_index(array, j); + + if (ebo->keep == EINA_FALSE) + free(g_ptr_array_remove_index_fast(array, j)); + else + j++; + } + } + } + + for (j = 0; j < array->len; ++j) + { + ebo = g_ptr_array_index(array, j); + + ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE; + } + } + + for (j = 0; j < array->len; ++j) + free(g_ptr_array_index(array, j)); + g_ptr_array_free(array, TRUE); +} +#endif + void eina_bench_array(Eina_Bench *bench) { eina_bench_register(bench, "array-inline", EINA_BENCH(eina_bench_array_4evas_render_inline), 200, 4000, 100); @@ -432,5 +560,9 @@ eina_bench_register(bench, "list-iterator", EINA_BENCH(eina_bench_list_4evas_render_iterator), 200, 4000, 100); eina_bench_register(bench, "inlist", EINA_BENCH(eina_bench_inlist_4evas_render), 200, 4000, 100); eina_bench_register(bench, "inlist-iterator", EINA_BENCH(eina_bench_inlist_4evas_render_iterator), 200, 4000, 100); +#ifdef EINA_BENCH_HAVE_GLIB + eina_bench_register(bench, "glist", EINA_BENCH(eina_bench_glist_4evas_render), 200, 4000, 100); + eina_bench_register(bench, "gptrarray", EINA_BENCH(eina_bench_gptrarray_4evas_render), 200, 4000, 100); +#endif } Modified: trunk/PROTO/eina/src/tests/eina_bench_hash.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench_hash.c 2008-08-27 17:13:58 UTC (rev 35698) +++ trunk/PROTO/eina/src/tests/eina_bench_hash.c 2008-08-27 17:14:34 UTC (rev 35699) @@ -16,11 +16,19 @@ * if not, see <http://www.gnu.org/licenses/>. */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + #include <stdlib.h> #include <stdio.h> #include <string.h> #include <time.h> +#ifdef EINA_BENCH_HAVE_GLIB +#include <glib.h> +#endif + #include "eina_hash.h" #include "eina_array.h" #include "eina_bench.h" @@ -219,9 +227,57 @@ eina_array_free(array); } +#ifdef EINA_BENCH_HAVE_GLIB +typedef struct _Eina_Bench_Glib Eina_Bench_Glib; +struct _Eina_Bench_Glib +{ + char *key; + int value; +}; + +static void +eina_bench_lookup_ghash(int request) +{ + Eina_Bench_Glib *elm; + GHashTable *hash; + unsigned int i; + + hash = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, free); + + for (i = 0; i < (unsigned int) request; ++i) + { + elm = malloc(sizeof (Eina_Bench_Glib) + 10); + if (!elm) continue ; + + elm->key = (char*) (elm + 1); + + snprintf(elm->key, 10, "%i", i); + elm->value = i; + + g_hash_table_insert(hash, elm->key, elm); + } + + srand(time(NULL)); + + for (i = 0; i < (unsigned int) request; ++i) + { + char tmp_key[10]; + + snprintf(tmp_key, 10, "%i", rand() % request); + + elm = g_hash_table_lookup(hash, tmp_key); + } + + g_hash_table_destroy(hash); +} +#endif + void eina_bench_hash(Eina_Bench *bench) { eina_bench_register(bench, "superfast-lookup", EINA_BENCH(eina_bench_lookup_superfast), 1000, 180000, 2500); eina_bench_register(bench, "djb2-lookup", EINA_BENCH(eina_bench_lookup_djb2), 1000, 180000, 2500); eina_bench_register(bench, "djb2-lookup-inline", EINA_BENCH(eina_bench_lookup_djb2_inline), 1000, 180000, 2500); +#ifdef EINA_BENCH_HAVE_GLIB + eina_bench_register(bench, "ghash-lookup", EINA_BENCH(eina_bench_lookup_ghash), 1000, 180000, 2500); +#endif } Modified: trunk/PROTO/eina/src/tests/eina_bench_stringshare.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench_stringshare.c 2008-08-27 17:13:58 UTC (rev 35698) +++ trunk/PROTO/eina/src/tests/eina_bench_stringshare.c 2008-08-27 17:14:34 UTC (rev 35699) @@ -16,10 +16,18 @@ * if not, see <http://www.gnu.org/licenses/>. */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + #include <stdlib.h> #include <time.h> #include <stdio.h> +#ifdef EINA_BENCH_HAVE_GLIB +#include <glib.h> +#endif + #include "eina_stringshare.h" #include "eina_bench.h" #include "eina_array.h" @@ -68,7 +76,43 @@ eina_stringshare_shutdown(); } +#ifdef EINA_BENCH_HAVE_GLIB +static void +eina_bench_stringchunk_job(int request) +{ + GStringChunk *chunk; + unsigned int j; + int i; + + chunk = g_string_chunk_new(4096); + + for (i = 0; i < request; ++i) + { + char build[64]; + + snprintf(build, 64, "string_%i", i); + g_string_chunk_insert_const(chunk, build); + } + + srand(time(NULL)); + + for (j = 0; j < 200; ++j) + for (i = 0; i < request; ++i) + { + char build[64]; + + snprintf(build, 64, "string_%i", rand() % request); + g_string_chunk_insert_const(chunk, build); + } + + g_string_chunk_free(chunk); +} +#endif + void eina_bench_stringshare(Eina_Bench *bench) { eina_bench_register(bench, "stringshare", EINA_BENCH(eina_bench_stringshare_job), 100, 20100, 500); +#ifdef EINA_BENCH_HAVE_GLIB + eina_bench_register(bench, "stringchunk (glib)", EINA_BENCH(eina_bench_stringchunk_job), 100, 20100, 500); +#endif } |
From: <no-...@en...> - 2008-08-28 09:34:57
|
Author: cedric Date: 2008-08-28 02:34:55 -0700 (Thu, 28 Aug 2008) New Revision: 35706 Modified: trunk/PROTO/eina/src/tests/eina_bench_convert.c Log: Bench convertion of string<->double. Modified: trunk/PROTO/eina/src/tests/eina_bench_convert.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench_convert.c 2008-08-28 07:46:42 UTC (rev 35705) +++ trunk/PROTO/eina/src/tests/eina_bench_convert.c 2008-08-28 09:34:55 UTC (rev 35706) @@ -16,10 +16,19 @@ * if not, see <http://www.gnu.org/licenses/>. */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + #include <time.h> #include <stdlib.h> #include <stdio.h> +#include <math.h> +#ifdef EINA_BENCH_HAVE_GLIB +#include <glib.h> +#endif + #include "eina_bench.h" #include "eina_convert.h" @@ -79,12 +88,73 @@ } } +static void +eina_bench_convert_snprintf_a(int request) +{ + char tmp[128]; + double r; + int i; + + srand(time(NULL)); + + for (i = 0; i < request; ++i) + { + r = 10000 * (rand() / ((double)RAND_MAX + 1)); + snprintf(tmp, 128, "%a", r); + sscanf(tmp, "%la", &r); + } +} + +static void +eina_bench_convert_dtoa(int request) +{ + char tmp[128]; + long long m; + long e; + double r; + int i; + + srand(time(NULL)); + + for (i = 0; i < request; ++i) + { + r = 10000 * (rand() / ((double)RAND_MAX + 1)); + eina_convert_dtoa(r, tmp); + eina_convert_atod(tmp, 128, &m, &e); + r = ldexp((double)m, e); + } +} + +#ifdef EINA_BENCH_HAVE_GLIB +static void +eina_bench_convert_gstrtod(int request) +{ + char tmp[128]; + double r; + int i; + + srand(time(NULL)); + + for (i = 0; i < request; ++i) + { + r = 10000 * (rand() / ((double)RAND_MAX + 1)); + g_ascii_dtostr(tmp, 128, r); + r = g_ascii_strtod(tmp, NULL); + } +} +#endif + void eina_bench_convert(Eina_Bench *bench) { eina_bench_register(bench, "itoa 10", EINA_BENCH(eina_bench_convert_itoa_10), 1000, 200000, 500); eina_bench_register(bench, "itoa 16", EINA_BENCH(eina_bench_convert_itoa_16), 1000, 200000, 500); eina_bench_register(bench, "snprintf 10", EINA_BENCH(eina_bench_convert_snprintf_10), 1000, 200000, 500); eina_bench_register(bench, "snprintf 16", EINA_BENCH(eina_bench_convert_snprintf_x), 1000, 200000, 500); + eina_bench_register(bench, "snprintf a", EINA_BENCH(eina_bench_convert_snprintf_a), 1000, 200000, 500); + eina_bench_register(bench, "dtoa", EINA_BENCH(eina_bench_convert_dtoa), 1000, 200000, 500); +#ifdef EINA_BENCH_HAVE_GLIB + eina_bench_register(bench, "gstrtod", EINA_BENCH(eina_bench_convert_gstrtod), 1000, 200000, 500); +#endif } |
From: <no-...@en...> - 2008-08-28 11:40:02
|
Author: cedric Date: 2008-08-28 04:40:01 -0700 (Thu, 28 Aug 2008) New Revision: 35709 Modified: trunk/PROTO/eina/src/tests/eina_test_rbtree.c Log: Add two minimal example that trigger error in the rbtree during removal. Modified: trunk/PROTO/eina/src/tests/eina_test_rbtree.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_rbtree.c 2008-08-28 11:12:23 UTC (rev 35708) +++ trunk/PROTO/eina/src/tests/eina_test_rbtree.c 2008-08-28 11:40:01 UTC (rev 35709) @@ -188,11 +188,64 @@ } END_TEST +START_TEST(eina_rbtree_simple_remove) +{ + Eina_Rbtree *root = NULL; + Eina_Rbtree *lookup; + int i; + + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(10), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(42), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(69), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(1337), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + + fail_if(root == NULL); + + i = 69; + lookup = eina_rbtree_inline_lookup(root, &i, sizeof (int), EINA_RBTREE_CMP_KEY_CB(eina_rbtree_int_key)); + _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + fail_if(lookup == NULL); + + root = eina_rbtree_inline_remove(root, lookup, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); +} +END_TEST + +START_TEST(eina_rbtree_simple_remove2) +{ + Eina_Rbtree *root = NULL; + Eina_Rbtree *lookup; + int i; + + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(10), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(42), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(69), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(1337), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(77), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(75), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(81), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + + fail_if(root == NULL); + + i = 69; + lookup = eina_rbtree_inline_lookup(root, &i, sizeof (int), EINA_RBTREE_CMP_KEY_CB(eina_rbtree_int_key)); + _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + fail_if(lookup == NULL); + + root = eina_rbtree_inline_remove(root, lookup, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); +} +END_TEST + void eina_test_rbtree(TCase *tc) { tcase_add_test(tc, eina_rbtree_insertion); tcase_add_test(tc, eina_rbtree_lookup); tcase_add_test(tc, eina_rbtree_remove); + tcase_add_test(tc, eina_rbtree_simple_remove); + tcase_add_test(tc, eina_rbtree_simple_remove2); } |
From: <no-...@en...> - 2008-08-28 11:49:36
|
Author: cedric Date: 2008-08-28 04:49:34 -0700 (Thu, 28 Aug 2008) New Revision: 35710 Modified: trunk/PROTO/eina/src/tests/eina_test_rbtree.c Log: Display the tree. Modified: trunk/PROTO/eina/src/tests/eina_test_rbtree.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_rbtree.c 2008-08-28 11:40:01 UTC (rev 35709) +++ trunk/PROTO/eina/src/tests/eina_test_rbtree.c 2008-08-28 11:49:34 UTC (rev 35710) @@ -188,6 +188,37 @@ } END_TEST +static void +eina_rbtree_display_int(Eina_Rbtree_Int *root, int offset) +{ + int i; + + for (i = 0; i < offset; ++i) + fprintf(stderr, "\t"); + + if (!root) + { + fprintf(stderr, "NULL\n"); + return ; + } + + fprintf(stderr, "v: %i ", root->value); + + if (root->node.color == EINA_RBTREE_RED) + fprintf(stderr, "r"); + else + fprintf(stderr, "b"); + fprintf(stderr, "\n"); + + for (i = 0; i < offset; ++i) + fprintf(stderr, "\t"); + eina_rbtree_display_int((Eina_Rbtree_Int*) root->node.son[EINA_RBTREE_RIGHT], offset + 1); + + for (i = 0; i < offset; ++i) + fprintf(stderr, "\t"); + eina_rbtree_display_int((Eina_Rbtree_Int*) root->node.son[EINA_RBTREE_LEFT], offset + 1); +} + START_TEST(eina_rbtree_simple_remove) { Eina_Rbtree *root = NULL; @@ -202,6 +233,10 @@ fail_if(root == NULL); + fprintf(stderr, "******\n"); + eina_rbtree_display_int((Eina_Rbtree_Int*) root, 0); + fprintf(stderr, "******\n"); + i = 69; lookup = eina_rbtree_inline_lookup(root, &i, sizeof (int), EINA_RBTREE_CMP_KEY_CB(eina_rbtree_int_key)); _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); @@ -229,6 +264,10 @@ fail_if(root == NULL); + fprintf(stderr, "******\n"); + eina_rbtree_display_int((Eina_Rbtree_Int*) root, 0); + fprintf(stderr, "******\n"); + i = 69; lookup = eina_rbtree_inline_lookup(root, &i, sizeof (int), EINA_RBTREE_CMP_KEY_CB(eina_rbtree_int_key)); _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); |
From: <no-...@en...> - 2008-08-28 11:55:12
|
Author: cedric Date: 2008-08-28 04:55:08 -0700 (Thu, 28 Aug 2008) New Revision: 35711 Modified: trunk/PROTO/eina/src/tests/eina_test_rbtree.c Log: Display tree before and after removal. Modified: trunk/PROTO/eina/src/tests/eina_test_rbtree.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_rbtree.c 2008-08-28 11:49:34 UTC (rev 35710) +++ trunk/PROTO/eina/src/tests/eina_test_rbtree.c 2008-08-28 11:55:08 UTC (rev 35711) @@ -233,7 +233,7 @@ fail_if(root == NULL); - fprintf(stderr, "******\n"); + fprintf(stderr, "** before **\n"); eina_rbtree_display_int((Eina_Rbtree_Int*) root, 0); fprintf(stderr, "******\n"); @@ -243,6 +243,11 @@ fail_if(lookup == NULL); root = eina_rbtree_inline_remove(root, lookup, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + + fprintf(stderr, "** after **\n"); + eina_rbtree_display_int((Eina_Rbtree_Int*) root, 0); + fprintf(stderr, "******\n"); + _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); } END_TEST @@ -264,7 +269,7 @@ fail_if(root == NULL); - fprintf(stderr, "******\n"); + fprintf(stderr, "** before **\n"); eina_rbtree_display_int((Eina_Rbtree_Int*) root, 0); fprintf(stderr, "******\n"); @@ -274,6 +279,11 @@ fail_if(lookup == NULL); root = eina_rbtree_inline_remove(root, lookup, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + + fprintf(stderr, "** after **\n"); + eina_rbtree_display_int((Eina_Rbtree_Int*) root, 0); + fprintf(stderr, "******\n"); + _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); } END_TEST |
From: <no-...@en...> - 2008-08-28 13:54:09
|
Author: cedric Date: 2008-08-28 06:54:07 -0700 (Thu, 28 Aug 2008) New Revision: 35713 Modified: trunk/PROTO/eina/src/tests/eina_test_rbtree.c Log: Add a test that trigger the parent bug. Modified: trunk/PROTO/eina/src/tests/eina_test_rbtree.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_rbtree.c 2008-08-28 12:41:58 UTC (rev 35712) +++ trunk/PROTO/eina/src/tests/eina_test_rbtree.c 2008-08-28 13:54:07 UTC (rev 35713) @@ -167,7 +167,7 @@ srand(time(NULL)); - for (i = 0; i < 100; ++i) + for (i = 0; i < 500; ++i) { item = _eina_rbtree_int_new(rand()); eina_array_push(ea, item); @@ -188,37 +188,6 @@ } END_TEST -static void -eina_rbtree_display_int(Eina_Rbtree_Int *root, int offset) -{ - int i; - - for (i = 0; i < offset; ++i) - fprintf(stderr, "\t"); - - if (!root) - { - fprintf(stderr, "NULL\n"); - return ; - } - - fprintf(stderr, "v: %i ", root->value); - - if (root->node.color == EINA_RBTREE_RED) - fprintf(stderr, "r"); - else - fprintf(stderr, "b"); - fprintf(stderr, "\n"); - - for (i = 0; i < offset; ++i) - fprintf(stderr, "\t"); - eina_rbtree_display_int((Eina_Rbtree_Int*) root->node.son[EINA_RBTREE_RIGHT], offset + 1); - - for (i = 0; i < offset; ++i) - fprintf(stderr, "\t"); - eina_rbtree_display_int((Eina_Rbtree_Int*) root->node.son[EINA_RBTREE_LEFT], offset + 1); -} - START_TEST(eina_rbtree_simple_remove) { Eina_Rbtree *root = NULL; @@ -233,10 +202,6 @@ fail_if(root == NULL); - fprintf(stderr, "** before **\n"); - eina_rbtree_display_int((Eina_Rbtree_Int*) root, 0); - fprintf(stderr, "******\n"); - i = 69; lookup = eina_rbtree_inline_lookup(root, &i, sizeof (int), EINA_RBTREE_CMP_KEY_CB(eina_rbtree_int_key)); _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); @@ -244,10 +209,6 @@ root = eina_rbtree_inline_remove(root, lookup, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); - fprintf(stderr, "** after **\n"); - eina_rbtree_display_int((Eina_Rbtree_Int*) root, 0); - fprintf(stderr, "******\n"); - _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); } END_TEST @@ -269,10 +230,6 @@ fail_if(root == NULL); - fprintf(stderr, "** before **\n"); - eina_rbtree_display_int((Eina_Rbtree_Int*) root, 0); - fprintf(stderr, "******\n"); - i = 69; lookup = eina_rbtree_inline_lookup(root, &i, sizeof (int), EINA_RBTREE_CMP_KEY_CB(eina_rbtree_int_key)); _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); @@ -280,11 +237,41 @@ root = eina_rbtree_inline_remove(root, lookup, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); - fprintf(stderr, "** after **\n"); - eina_rbtree_display_int((Eina_Rbtree_Int*) root, 0); - fprintf(stderr, "******\n"); + _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); +} +END_TEST +START_TEST(eina_rbtree_simple_remove3) +{ + Eina_Rbtree *root = NULL; + Eina_Rbtree *lookup; + int i; + + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(1113497590), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(499187507), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(1693860487), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(26211080), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(797272577), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(1252184882), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(1448158229), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(1821884856), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(346086006), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(936357333), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(1462073936), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(1717320055), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) _eina_rbtree_int_new(1845524606), EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + + fail_if(root == NULL); + + i = 1113497590; + lookup = eina_rbtree_inline_lookup(root, &i, sizeof (int), EINA_RBTREE_CMP_KEY_CB(eina_rbtree_int_key)); + _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + fail_if(lookup == NULL); + + root = eina_rbtree_inline_remove(root, lookup, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); + + _eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp)); } END_TEST @@ -296,5 +283,6 @@ tcase_add_test(tc, eina_rbtree_remove); tcase_add_test(tc, eina_rbtree_simple_remove); tcase_add_test(tc, eina_rbtree_simple_remove2); + tcase_add_test(tc, eina_rbtree_simple_remove3); } |
From: <no-...@en...> - 2008-08-28 16:36:19
|
Author: cedric Date: 2008-08-28 09:36:18 -0700 (Thu, 28 Aug 2008) New Revision: 35721 Modified: trunk/PROTO/eina/src/tests/eina_suite.c Log: Activate rbtree now that it work correctly. Modified: trunk/PROTO/eina/src/tests/eina_suite.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_suite.c 2008-08-28 16:35:43 UTC (rev 35720) +++ trunk/PROTO/eina/src/tests/eina_suite.c 2008-08-28 16:36:18 UTC (rev 35721) @@ -40,7 +40,7 @@ { "Accessor", eina_test_accessor }, { "Module", eina_test_module }, { "Convert", eina_test_convert }, -/* { "Rbtree", eina_test_rbtree }, */ + { "Rbtree", eina_test_rbtree }, { NULL, NULL } }; |
From: <no-...@en...> - 2008-08-29 09:31:30
|
Author: cedric Date: 2008-08-29 02:31:25 -0700 (Fri, 29 Aug 2008) New Revision: 35728 Modified: trunk/PROTO/eina/src/tests/eina_bench_hash.c Log: We don't want to bench snprintf with callgrind. Modified: trunk/PROTO/eina/src/tests/eina_bench_hash.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench_hash.c 2008-08-29 06:28:05 UTC (rev 35727) +++ trunk/PROTO/eina/src/tests/eina_bench_hash.c 2008-08-29 09:31:25 UTC (rev 35728) @@ -33,6 +33,7 @@ #include "eina_array.h" #include "eina_bench.h" #include "eina_rbtree.h" +#include "eina_convert.h" typedef struct _Eina_Bench_Rbtree Eina_Bench_Rbtree; struct _Eina_Bench_Rbtree @@ -72,7 +73,7 @@ if (!tmp) continue ; tmp->value = i; - snprintf(tmp->key, 10, "%i", i); + eina_convert_itoa(i, tmp->key); root = eina_rbtree_inline_insert(root, &tmp->node, EINA_RBTREE_CMP_NODE_CB(_eina_bench_rbtree_cmp), NULL); } @@ -83,7 +84,7 @@ { char tmp_key[10]; - snprintf(tmp_key, 10, "%i", rand() % request); + eina_convert_itoa(rand() % request, tmp_key); tmp = eina_rbtree_inline_lookup(root, tmp_key, 10, EINA_RBTREE_CMP_KEY_CB(_eina_bench_rbtree_key), NULL); } @@ -117,7 +118,7 @@ if (!tmp_val) continue ; - snprintf(tmp_key, 10, "%i", i); + eina_convert_itoa(i, tmp_key); *tmp_val = i; eina_hash_add(hash, tmp_key, tmp_val); @@ -131,7 +132,7 @@ { char tmp_key[10]; - snprintf(tmp_key, 10, "%i", rand() % request); + eina_convert_itoa(rand() % request, tmp_key); tmp_val = eina_hash_find(hash, tmp_key); } @@ -165,7 +166,7 @@ if (!tmp_key || !tmp_val) continue ; - snprintf(tmp_key, 10, "%i", i); + eina_convert_itoa(i, tmp_key); *tmp_val = i; eina_hash_add(hash, tmp_key, tmp_val); @@ -179,7 +180,7 @@ { char tmp_key[10]; - snprintf(tmp_key, 10, "%i", rand() % request); + eina_convert_itoa(rand() % request, tmp_key); tmp_val = eina_hash_find(hash, tmp_key); } @@ -214,7 +215,7 @@ if (!tmp_key || !tmp_val) continue ; - length = snprintf(tmp_key, 10, "%i", i) + 1; + length = eina_convert_itoa(i, tmp_key) + 1; *tmp_val = i; eina_hash_add_by_hash(hash, tmp_key, length, eina_hash_djb2(tmp_key, length), tmp_val); @@ -229,7 +230,7 @@ char tmp_key[10]; int length; - length = snprintf(tmp_key, 10, "%i", rand() % request) + 1; + length = eina_convert_itoa(rand() % request, tmp_key) + 1; tmp_val = eina_hash_find_by_hash(hash, tmp_key, length, eina_hash_djb2(tmp_key, length)); } @@ -266,7 +267,7 @@ elm->key = (char*) (elm + 1); - snprintf(elm->key, 10, "%i", i); + eina_convert_itoa(i, elm->key); elm->value = i; g_hash_table_insert(hash, elm->key, elm); @@ -278,7 +279,7 @@ { char tmp_key[10]; - snprintf(tmp_key, 10, "%i", rand() % request); + eina_convert_itoa(rand() % request, tmp_key); elm = g_hash_table_lookup(hash, tmp_key); } |
From: <no-...@en...> - 2008-08-29 13:50:26
|
Author: cedric Date: 2008-08-29 06:50:25 -0700 (Fri, 29 Aug 2008) New Revision: 35732 Modified: trunk/PROTO/eina/src/tests/eina_test_iterator.c trunk/PROTO/eina/src/tests/eina_test_rbtree.c Log: In fact the node should never be NULL or something is really going wrong. Modified: trunk/PROTO/eina/src/tests/eina_test_iterator.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_iterator.c 2008-08-29 13:49:06 UTC (rev 35731) +++ trunk/PROTO/eina/src/tests/eina_test_iterator.c 2008-08-29 13:50:25 UTC (rev 35732) @@ -281,8 +281,8 @@ static Eina_Rbtree_Direction eina_rbtree_int_cmp(const Eina_Rbtree_Int *left, const Eina_Rbtree_Int *right) { - if (!left) return EINA_RBTREE_RIGHT; - if (!right) return EINA_RBTREE_LEFT; + fail_if(!left); + fail_if(!right); if (left->value < right->value) return EINA_RBTREE_LEFT; return EINA_RBTREE_RIGHT; Modified: trunk/PROTO/eina/src/tests/eina_test_rbtree.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_rbtree.c 2008-08-29 13:49:06 UTC (rev 35731) +++ trunk/PROTO/eina/src/tests/eina_test_rbtree.c 2008-08-29 13:50:25 UTC (rev 35732) @@ -85,8 +85,8 @@ static Eina_Rbtree_Direction eina_rbtree_int_cmp(const Eina_Rbtree_Int *left, const Eina_Rbtree_Int *right, __UNUSED__ void *data) { - if (!left) return EINA_RBTREE_RIGHT; - if (!right) return EINA_RBTREE_LEFT; + fail_if(!left); + fail_if(!right); if (left->value < right->value) return EINA_RBTREE_LEFT; return EINA_RBTREE_RIGHT; @@ -95,7 +95,7 @@ static int eina_rbtree_int_key(const Eina_Rbtree_Int *node, const int *key, __UNUSED__ int length, __UNUSED__ void *data) { - if (!node) return 1; + fail_if(!node); return node->value - *key; } |
From: <no-...@en...> - 2008-08-29 16:06:17
|
Author: cedric Date: 2008-08-29 09:06:14 -0700 (Fri, 29 Aug 2008) New Revision: 35738 Modified: trunk/PROTO/eina/src/tests/eina_test_array.c trunk/PROTO/eina/src/tests/eina_test_hash.c trunk/PROTO/eina/src/tests/eina_test_stringshare.c Log: Always use eina when possible. Modified: trunk/PROTO/eina/src/tests/eina_test_array.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_array.c 2008-08-29 15:27:53 UTC (rev 35737) +++ trunk/PROTO/eina/src/tests/eina_test_array.c 2008-08-29 16:06:14 UTC (rev 35738) @@ -20,6 +20,7 @@ #include "eina_suite.h" #include "eina_array.h" +#include "eina_convert.h" START_TEST(eina_array_simple) { @@ -37,7 +38,7 @@ { tmp = malloc(sizeof(char) * 10); fail_if(!tmp); - snprintf(tmp, 10, "%i", i); + eina_convert_itoa(i, tmp); eina_array_push(ea, tmp); } @@ -80,7 +81,7 @@ { tmp = malloc(sizeof(char) * 10); fail_if(!tmp); - snprintf(tmp, 10, "%i", i); + eina_convert_itoa(i, tmp); eina_array_push(&sea, tmp); } Modified: trunk/PROTO/eina/src/tests/eina_test_hash.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_hash.c 2008-08-29 15:27:53 UTC (rev 35737) +++ trunk/PROTO/eina/src/tests/eina_test_hash.c 2008-08-29 16:06:14 UTC (rev 35738) @@ -125,7 +125,7 @@ { char *tmp = malloc(10); fail_if(!tmp); - snprintf(tmp, 10, "%i", i); + eina_convert_itoa(i, tmp); fail_if(eina_hash_direct_add(hash, tmp, tmp) != EINA_TRUE); } Modified: trunk/PROTO/eina/src/tests/eina_test_stringshare.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_stringshare.c 2008-08-29 15:27:53 UTC (rev 35737) +++ trunk/PROTO/eina/src/tests/eina_test_stringshare.c 2008-08-29 16:06:14 UTC (rev 35738) @@ -23,6 +23,7 @@ #include "eina_suite.h" #include "eina_stringshare.h" #include "eina_array.h" +#include "eina_convert.h" START_TEST(eina_stringshare_init_shutdown) { @@ -100,14 +101,14 @@ for (i = 0; i < 10000; ++i) { - snprintf(buffer, 1024, "%i", rand()); + eina_convert_itoa(rand(), buffer); eina_array_push(ea, (void*) eina_stringshare_add(buffer)); if (rand() > RAND_MAX / 2) eina_stringshare_add(buffer); } for (i = 0; i < 10000; ++i) { - snprintf(buffer, 1024, "%i", 60000 - i); + eina_convert_itoa(60000 - i, buffer); eina_array_push(ea, (void*) eina_stringshare_add(buffer)); eina_stringshare_add(buffer); } |
From: <no-...@en...> - 2008-08-29 16:07:57
|
Author: cedric Date: 2008-08-29 09:07:55 -0700 (Fri, 29 Aug 2008) New Revision: 35739 Modified: trunk/PROTO/eina/src/tests/eina_bench_stringshare.c Log: Don't benchmark snprintf. Modified: trunk/PROTO/eina/src/tests/eina_bench_stringshare.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench_stringshare.c 2008-08-29 16:06:14 UTC (rev 35738) +++ trunk/PROTO/eina/src/tests/eina_bench_stringshare.c 2008-08-29 16:07:55 UTC (rev 35739) @@ -30,6 +30,7 @@ #include "eina_stringshare.h" #include "eina_bench.h" +#include "eina_convert.h" static void eina_bench_stringshare_job(int request) @@ -42,9 +43,9 @@ for (i = 0; i < request; ++i) { - char build[64]; + char build[64] = "string_"; - snprintf(build, 64, "string_%i", i); + eina_convert_xtoa(i, build + 7); tmp = eina_stringshare_add(build); } @@ -53,9 +54,9 @@ for (j = 0; j < 200; ++j) for (i = 0; i < request; ++i) { - char build[64]; + char build[64] = "string_"; - snprintf(build, 64, "string_%i", rand() % request); + eina_convert_xtoa(rand() % request, build + 7); tmp = eina_stringshare_add(build); } @@ -74,9 +75,9 @@ for (i = 0; i < request; ++i) { - char build[64]; + char build[64] = "string_"; - snprintf(build, 64, "string_%i", i); + eina_convert_xtoa(i, build + 7); g_string_chunk_insert_const(chunk, build); } @@ -85,9 +86,9 @@ for (j = 0; j < 200; ++j) for (i = 0; i < request; ++i) { - char build[64]; + char build[64] = "string_"; - snprintf(build, 64, "string_%i", rand() % request); + eina_convert_xtoa(rand() % request, build + 7); g_string_chunk_insert_const(chunk, build); } |
From: <no-...@en...> - 2008-08-29 16:21:40
|
Author: cedric Date: 2008-08-29 09:21:37 -0700 (Fri, 29 Aug 2008) New Revision: 35741 Modified: trunk/PROTO/eina/src/tests/eina_bench.c Log: Add all benchmark and prefer line instead of logscale. Modified: trunk/PROTO/eina/src/tests/eina_bench.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench.c 2008-08-29 16:09:39 UTC (rev 35740) +++ trunk/PROTO/eina/src/tests/eina_bench.c 2008-08-29 16:21:37 UTC (rev 35741) @@ -116,7 +116,7 @@ "unset label # remove any previous labels\n" "set xtic auto # set xtics automatically\n" "set ytic auto # set ytics automatically\n" - "set logscale y\n" +/* "set logscale y\n" */ "set terminal png size 1024,768\n" "set output \"output_%s_%s.png\"\n" "set title \"%s %s\n" @@ -179,8 +179,8 @@ static const Eina_Bench_Case etc[] = { { "Hash", eina_bench_hash }, { "Array vs List vs Inlist", eina_bench_array }, -/* { "Stringshare", eina_bench_stringshare }, */ -/* { "Convert", eina_bench_convert }, */ + { "Stringshare", eina_bench_stringshare }, + { "Convert", eina_bench_convert }, { NULL, NULL } }; |
From: <no-...@en...> - 2008-08-29 17:21:08
|
Author: cedric Date: 2008-08-29 10:21:06 -0700 (Fri, 29 Aug 2008) New Revision: 35743 Modified: trunk/PROTO/eina/src/tests/eina_bench.c Log: Main should return something. Modified: trunk/PROTO/eina/src/tests/eina_bench.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench.c 2008-08-29 16:24:25 UTC (rev 35742) +++ trunk/PROTO/eina/src/tests/eina_bench.c 2008-08-29 17:21:06 UTC (rev 35743) @@ -203,4 +203,6 @@ eina_bench_delete(test); } + + return 0; } |
From: <no-...@en...> - 2008-09-03 14:38:53
|
Author: cedric Date: 2008-09-03 07:38:49 -0700 (Wed, 03 Sep 2008) New Revision: 35813 Modified: trunk/PROTO/eina/src/tests/eina_test_hash.c Log: Remove warning. Modified: trunk/PROTO/eina/src/tests/eina_test_hash.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_hash.c 2008-09-03 14:02:14 UTC (rev 35812) +++ trunk/PROTO/eina/src/tests/eina_test_hash.c 2008-09-03 14:38:49 UTC (rev 35813) @@ -24,6 +24,7 @@ #include <stdlib.h> #include "eina_hash.h" +#include "eina_convert.h" #include "eina_suite.h" START_TEST(eina_hash_init_shutdown) |
From: <no-...@en...> - 2008-09-03 14:48:58
|
Author: cedric Date: 2008-09-03 07:48:56 -0700 (Wed, 03 Sep 2008) New Revision: 35815 Modified: trunk/PROTO/eina/src/tests/Makefile.am Log: Oops, forgot this update. Modified: trunk/PROTO/eina/src/tests/Makefile.am =================================================================== --- trunk/PROTO/eina/src/tests/Makefile.am 2008-09-03 14:40:12 UTC (rev 35814) +++ trunk/PROTO/eina/src/tests/Makefile.am 2008-09-03 14:48:56 UTC (rev 35815) @@ -38,6 +38,7 @@ eina_test_module.c \ eina_test_convert.c \ eina_test_rbtree.c \ +eina_test_file.c \ eina_test_list.c eina_suite_LDADD = @CHECK_LIBS@ $(top_builddir)/src/lib/libeina.la |
From: <no-...@en...> - 2008-09-04 14:58:25
|
Author: cedric Date: 2008-09-04 07:58:22 -0700 (Thu, 04 Sep 2008) New Revision: 35831 Modified: trunk/PROTO/eina/src/tests/eina_test_file.c Log: Remove debug variable. Modified: trunk/PROTO/eina/src/tests/eina_test_file.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_file.c 2008-09-04 14:39:36 UTC (rev 35830) +++ trunk/PROTO/eina/src/tests/eina_test_file.c 2008-09-04 14:58:22 UTC (rev 35831) @@ -22,9 +22,6 @@ START_TEST(eina_file_split_simple) { Eina_Array *ea; - char *tmp; - Eina_Array_Iterator it; - unsigned int i; eina_array_init(); |
From: <no-...@en...> - 2008-09-15 09:59:43
|
Author: cedric Date: 2008-09-15 02:59:41 -0700 (Mon, 15 Sep 2008) New Revision: 35995 Modified: trunk/PROTO/eina/src/tests/eina_bench_stringshare.c Log: Include benchmark against Evas and Ecore stringshare. Modified: trunk/PROTO/eina/src/tests/eina_bench_stringshare.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench_stringshare.c 2008-09-15 07:03:41 UTC (rev 35994) +++ trunk/PROTO/eina/src/tests/eina_bench_stringshare.c 2008-09-15 09:59:41 UTC (rev 35995) @@ -28,6 +28,14 @@ #include <glib.h> #endif +#ifdef EINA_BENCH_HAVE_EVAS +#include <Evas.h> +#endif + +#ifdef EINA_BENCH_HAVE_ECORE +#include <Ecore_Data.h> +#endif + #include "eina_stringshare.h" #include "eina_bench.h" #include "eina_convert.h" @@ -96,10 +104,84 @@ } #endif +#ifdef EINA_BENCH_HAVE_EVAS +static void +eina_bench_evas_job(int request) +{ + const char *tmp; + unsigned int j; + int i; + + evas_init(); +/* evas_stringshare_init(); */ + + for (i = 0; i < request; ++i) + { + char build[64] = "string_"; + + eina_convert_xtoa(i, build + 7); + tmp = evas_stringshare_add(build); + } + + srand(time(NULL)); + + for (j = 0; j < 200; ++j) + for (i = 0; i < request; ++i) + { + char build[64] = "string_"; + + eina_convert_xtoa(rand() % request, build + 7); + tmp = evas_stringshare_add(build); + } + +/* evas_stringshare_shutdown(); */ + evas_shutdown(); +} +#endif + +#ifdef EINA_BENCH_HAVE_ECORE +static void +eina_bench_ecore_job(int request) +{ + const char *tmp; + unsigned int j; + int i; + + ecore_string_init(); + + for (i = 0; i < request; ++i) + { + char build[64] = "string_"; + + eina_convert_xtoa(i, build + 7); + tmp = ecore_string_instance(build); + } + + srand(time(NULL)); + + for (j = 0; j < 200; ++j) + for (i = 0; i < request; ++i) + { + char build[64] = "string_"; + + eina_convert_xtoa(rand() % request, build + 7); + tmp = ecore_string_instance(build); + } + + ecore_string_shutdown(); +} +#endif + void eina_bench_stringshare(Eina_Benchmark *bench) { eina_benchmark_register(bench, "stringshare", EINA_BENCHMARK(eina_bench_stringshare_job), 100, 20100, 500); #ifdef EINA_BENCH_HAVE_GLIB eina_benchmark_register(bench, "stringchunk (glib)", EINA_BENCHMARK(eina_bench_stringchunk_job), 100, 20100, 500); #endif +#ifdef EINA_BENCH_HAVE_EVAS + eina_benchmark_register(bench, "stringshare (evas)", EINA_BENCHMARK(eina_bench_evas_job), 100, 20100, 500); +#endif +#ifdef EINA_BENCH_HAVE_ECORE + eina_benchmark_register(bench, "stringshare (ecore)", EINA_BENCHMARK(eina_bench_ecore_job), 100, 20100, 500); +#endif } |
From: <no-...@en...> - 2008-09-15 12:44:08
|
Author: cedric Date: 2008-09-15 05:44:06 -0700 (Mon, 15 Sep 2008) New Revision: 35999 Modified: trunk/PROTO/eina/src/tests/eina_test_stringshare.c Log: Add more test for stringshare. Modified: trunk/PROTO/eina/src/tests/eina_test_stringshare.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_stringshare.c 2008-09-15 12:35:27 UTC (rev 35998) +++ trunk/PROTO/eina/src/tests/eina_test_stringshare.c 2008-09-15 12:44:06 UTC (rev 35999) @@ -86,6 +86,26 @@ } END_TEST +START_TEST(eina_stringshare_putstuff) +{ + const char *tmp; + int i; + + eina_stringshare_init(); + + for (i = 10000; i > 0; --i) + { + char build[64] = "string_"; + + eina_convert_xtoa(i, build + 7); + tmp = eina_stringshare_add(build); + fail_if(tmp != eina_stringshare_add(build)); + } + + eina_stringshare_shutdown(); +} +END_TEST + START_TEST(eina_stringshare_collision) { Eina_Array *ea; @@ -141,4 +161,5 @@ tcase_add_test(tc, eina_stringshare_test_share); tcase_add_test(tc, eina_stringshare_collision); tcase_add_test(tc, eina_stringshare_not_owned); + tcase_add_test(tc, eina_stringshare_putstuff); } |
From: <no-...@en...> - 2008-09-16 06:50:36
|
Author: cedric Date: 2008-09-16 06:50:34 -0700 (Tue, 16 Sep 2008) New Revision: 36015 Modified: trunk/PROTO/eina/src/tests/eina_bench_hash.c Log: Add Ecore and Evas benchmark. Modified: trunk/PROTO/eina/src/tests/eina_bench_hash.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench_hash.c 2008-09-16 13:08:30 UTC (rev 36014) +++ trunk/PROTO/eina/src/tests/eina_bench_hash.c 2008-09-16 13:50:34 UTC (rev 36015) @@ -29,6 +29,14 @@ #include <glib.h> #endif +#ifdef EINA_BENCH_HAVE_EVAS +#include <Evas.h> +#endif + +#ifdef EINA_BENCH_HAVE_ECORE +#include <Ecore_Data.h> +#endif + #include "eina_hash.h" #include "eina_array.h" #include "eina_bench.h" @@ -288,6 +296,101 @@ } #endif +#ifdef EINA_BENCH_HAVE_EVAS +static void +eina_bench_lookup_evas(int request) +{ + Evas_Hash *hash = NULL; + Eina_Array *array = NULL; + int *tmp_val; + Eina_Array_Iterator it; + unsigned int i; + + array = eina_array_new(1000); + + for (i = 0; i < (unsigned int) request; ++i) + { + char tmp_key[10]; + + tmp_val = malloc(sizeof (int)); + + if (!tmp_key || !tmp_val) continue ; + + eina_convert_itoa(i, tmp_key); + *tmp_val = i; + + hash = evas_hash_add(hash, tmp_key, tmp_val); + + eina_array_push(array, tmp_val); + } + + srand(time(NULL)); + + for (i = 0; i < (unsigned int) request; ++i) + { + char tmp_key[10]; + + eina_convert_itoa(rand() % request, tmp_key); + + tmp_val = evas_hash_find(hash, tmp_key); + } + + evas_hash_free(hash); + + EINA_ARRAY_ITER_NEXT(array, i, tmp_val, it) + free(tmp_val); + + eina_array_free(array); +} +#endif + +#ifdef EINA_BENCH_HAVE_ECORE +typedef struct _Eina_Bench_Ecore Eina_Bench_Ecore; +struct _Eina_Bench_Ecore +{ + char *key; + int value; +}; + +static void +eina_bench_lookup_ecore(int request) +{ + Ecore_Hash *hash = NULL; + Eina_Bench_Ecore *elm; + unsigned int i; + + hash = ecore_hash_new(ecore_str_hash, ecore_str_compare); + + ecore_hash_free_key_cb_set(hash, NULL); + ecore_hash_free_value_cb_set(hash, free); + + for (i = 0; i < (unsigned int) request; ++i) + { + elm = malloc(sizeof (Eina_Bench_Ecore) + 10); + if (!elm) continue; + + elm->key = (char*) (elm + 1); + eina_convert_itoa(i, elm->key); + elm->value = i; + + ecore_hash_set(hash, elm->key, elm); + } + + srand(time(NULL)); + + for (i = 0; i < (unsigned int) request; ++i) + { + char tmp_key[10]; + + eina_convert_itoa(rand() % request, tmp_key); + + elm = ecore_hash_get(hash, tmp_key); + } + + ecore_hash_destroy(hash); +} +#endif + void eina_bench_hash(Eina_Benchmark *bench) { eina_benchmark_register(bench, "superfast-lookup", EINA_BENCHMARK(eina_bench_lookup_superfast), 1000, 180000, 2500); @@ -297,4 +400,10 @@ #ifdef EINA_BENCH_HAVE_GLIB eina_benchmark_register(bench, "ghash-lookup", EINA_BENCHMARK(eina_bench_lookup_ghash), 1000, 180000, 2500); #endif +#ifdef EINA_BENCH_HAVE_EVAS + eina_benchmark_register(bench, "evas-lookup", EINA_BENCHMARK(eina_bench_lookup_evas), 1000, 180000, 2500); +#endif +#ifdef EINA_BENCH_HAVE_ECORE + eina_benchmark_register(bench, "ecore-lookup", EINA_BENCHMARK(eina_bench_lookup_ecore), 1000, 180000, 2500); +#endif } |
From: Enlightenment S. <no-...@en...> - 2008-09-17 09:33:19
|
Author: cedric Date: 2008-09-17 09:33:16 -0700 (Wed, 17 Sep 2008) New Revision: 36054 Log: Add another mempool test. Modified: trunk/PROTO/eina/src/tests/eina_test_mempool.c Modified: trunk/PROTO/eina/src/tests/eina_test_mempool.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_mempool.c 2008-09-17 15:23:09 UTC (rev 36053) +++ trunk/PROTO/eina/src/tests/eina_test_mempool.c 2008-09-17 16:33:16 UTC (rev 36054) @@ -163,6 +163,48 @@ } END_TEST +START_TEST(eina_mempool_ememoa_unknown) +{ + Eina_Module_Group *gp; + Eina_Mempool *mp; + int *tbl[512]; + int i; + + eina_mempool_init(); + + eina_module_root_add(PACKAGE_BUILD_DIR"/src/tests"); + + gp = eina_mempool_module_group_get(); + fail_if(!gp); + eina_module_path_register(gp, PACKAGE_BUILD_DIR"/src/modules", EINA_TRUE); + + mp = eina_mempool_new("ememoa_unknown", "test", NULL, 0, 2, sizeof (int), 8, sizeof (int) * 2, 8); + fail_if(!mp); + + for (i = 0; i < 512; ++i) + { + tbl[i] = eina_mempool_alloc(mp, sizeof (int)); + fail_if(!tbl[i]); + *tbl[i] = i; + } + + for (i = 0; i < 512; ++i) + fail_if(*tbl[i] != i); + + for (i = 0; i < 256; ++i) + eina_mempool_free(mp, tbl[i]); + + for (i = 256; i < 512; ++i) + tbl[i] = eina_mempool_realloc(mp, tbl[i], 2 * sizeof (int)); + + eina_mempool_gc(mp); + eina_mempool_statistics(mp); + + eina_mempool_delete(mp); + + eina_mempool_shutdown(); +} +END_TEST #endif void @@ -173,6 +215,7 @@ tcase_add_test(tc, eina_mempool_pass_through); #ifdef EINA_EMEMOA_SUPPORT tcase_add_test(tc, eina_mempool_ememoa_fixed); + tcase_add_test(tc, eina_mempool_ememoa_unknown); #endif } |
From: Enlightenment S. <no-...@en...> - 2008-09-18 07:17:49
|
Author: cedric Date: 2008-09-18 07:17:48 -0700 (Thu, 18 Sep 2008) New Revision: 36079 Log: Set module path for all tests. Modified: trunk/PROTO/eina/src/tests/eina_suite.c trunk/PROTO/eina/src/tests/eina_test_mempool.c Modified: trunk/PROTO/eina/src/tests/eina_suite.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_suite.c 2008-09-18 14:16:47 UTC (rev 36078) +++ trunk/PROTO/eina/src/tests/eina_suite.c 2008-09-18 14:17:48 UTC (rev 36079) @@ -17,6 +17,7 @@ */ #include "eina_suite.h" +#include "eina_mempool.h" typedef struct _Eina_Test_Case Eina_Test_Case; struct _Eina_Test_Case @@ -71,6 +72,7 @@ int main(void) { + Eina_Module_Group *gp; Suite *s; SRunner *sr; int failed_count; @@ -78,9 +80,18 @@ s = eina_build_suite(); sr = srunner_create(s); + + eina_mempool_init(); + + eina_module_root_add(PACKAGE_BUILD_DIR"/src/tests"); + gp = eina_mempool_module_group_get(); + eina_module_path_register(gp, PACKAGE_BUILD_DIR"/src/modules", EINA_TRUE); + srunner_run_all(sr, CK_NORMAL); failed_count = srunner_ntests_failed(sr); srunner_free(sr); + eina_mempool_shutdown(); + return (failed_count == 0) ? 0 : 255; } Modified: trunk/PROTO/eina/src/tests/eina_test_mempool.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_mempool.c 2008-09-18 14:16:47 UTC (rev 36078) +++ trunk/PROTO/eina/src/tests/eina_test_mempool.c 2008-09-18 14:17:48 UTC (rev 36079) @@ -25,16 +25,10 @@ START_TEST(eina_mempool_init_shutdown) { - Eina_Module_Group *gp; Eina_Mempool *mp; eina_mempool_init(); - gp = eina_mempool_module_group_get(); - fail_if(!gp); - - eina_module_path_register(gp, PACKAGE_BUILD_DIR"/src/modules", EINA_TRUE); - mp = eina_mempool_new("test", "test", NULL); fail_if(mp != NULL); @@ -44,19 +38,12 @@ START_TEST(eina_mempool_chained_mempool) { - Eina_Module_Group *gp; Eina_Mempool *mp; int *tbl[512]; int i; eina_mempool_init(); - eina_module_root_add(PACKAGE_BUILD_DIR"/src/tests"); - - gp = eina_mempool_module_group_get(); - fail_if(!gp); - eina_module_path_register(gp, PACKAGE_BUILD_DIR"/src/modules", EINA_TRUE); - mp = eina_mempool_new("chained_mempool", "test", NULL, sizeof (int), 256); fail_if(!mp); @@ -83,19 +70,12 @@ START_TEST(eina_mempool_pass_through) { - Eina_Module_Group *gp; Eina_Mempool *mp; int *tbl[512]; int i; eina_mempool_init(); - eina_module_root_add(PACKAGE_BUILD_DIR"/src/tests"); - - gp = eina_mempool_module_group_get(); - fail_if(!gp); - eina_module_path_register(gp, PACKAGE_BUILD_DIR"/src/modules", EINA_TRUE); - mp = eina_mempool_new("pass_through", "test", NULL, sizeof (int), 8, 0); fail_if(!mp); @@ -123,19 +103,12 @@ #ifdef EINA_EMEMOA_SUPPORT START_TEST(eina_mempool_ememoa_fixed) { - Eina_Module_Group *gp; Eina_Mempool *mp; int *tbl[512]; int i; eina_mempool_init(); - eina_module_root_add(PACKAGE_BUILD_DIR"/src/tests"); - - gp = eina_mempool_module_group_get(); - fail_if(!gp); - eina_module_path_register(gp, PACKAGE_BUILD_DIR"/src/modules", EINA_TRUE); - mp = eina_mempool_new("ememoa_fixed", "test", NULL, sizeof (int), 8, 0); fail_if(!mp); @@ -165,19 +138,12 @@ START_TEST(eina_mempool_ememoa_unknown) { - Eina_Module_Group *gp; Eina_Mempool *mp; int *tbl[512]; int i; eina_mempool_init(); - eina_module_root_add(PACKAGE_BUILD_DIR"/src/tests"); - - gp = eina_mempool_module_group_get(); - fail_if(!gp); - eina_module_path_register(gp, PACKAGE_BUILD_DIR"/src/modules", EINA_TRUE); - mp = eina_mempool_new("ememoa_unknown", "test", NULL, 0, 2, sizeof (int), 8, sizeof (int) * 2, 8); fail_if(!mp); |
From: Enlightenment S. <no-...@en...> - 2008-09-18 07:19:51
|
Author: cedric Date: 2008-09-18 07:19:50 -0700 (Thu, 18 Sep 2008) New Revision: 36080 Log: Make module path global to all bench. Modified: trunk/PROTO/eina/src/tests/eina_bench.c Modified: trunk/PROTO/eina/src/tests/eina_bench.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench.c 2008-09-18 14:17:48 UTC (rev 36079) +++ trunk/PROTO/eina/src/tests/eina_bench.c 2008-09-18 14:19:50 UTC (rev 36080) @@ -21,6 +21,7 @@ #include <limits.h> #include "eina_bench.h" +#include "eina_mempool.h" typedef struct _Eina_Benchmark_Case Eina_Benchmark_Case; struct _Eina_Benchmark_Case @@ -40,6 +41,7 @@ int main(int argc, char **argv) { + Eina_Module_Group *gp; Eina_Benchmark *test; Eina_Array *ea; unsigned int i; @@ -71,8 +73,16 @@ eina_benchmark_free(test); } + eina_mempool_init(); + + eina_module_root_add(PACKAGE_BUILD_DIR"/src/tests"); + gp = eina_mempool_module_group_get(); + eina_module_path_register(gp, PACKAGE_BUILD_DIR"/src/modules", EINA_TRUE); + eina_bench_e17(); + eina_mempool_shutdown(); + eina_benchmark_shutdown(); return 0; |
From: Enlightenment S. <no-...@en...> - 2008-09-22 13:01:05
|
Log: Fix new inlist API. Author: cedric Date: 2008-09-22 06:00:52 -0700 (Mon, 22 Sep 2008) New Revision: 36163 Modified: trunk/PROTO/eina/src/tests/eina_bench_array.c Modified: trunk/PROTO/eina/src/tests/eina_bench_array.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench_array.c 2008-09-22 12:17:04 UTC (rev 36162) +++ trunk/PROTO/eina/src/tests/eina_bench_array.c 2008-09-22 13:00:52 UTC (rev 36163) @@ -45,7 +45,7 @@ typedef struct _Eina_Bench_Object Eina_Bench_Object; struct _Eina_Bench_Object { - Eina_Inlist __list; + EINA_INLIST; void *somewhere; int data; @@ -330,7 +330,7 @@ ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE; - head = eina_inlist_prepend(head, ebo); + head = eina_inlist_prepend(head, EINA_INLIST_GET(ebo)); } if (i == 500) @@ -354,7 +354,7 @@ tmp = tmp->next; if (ebo->keep == EINA_FALSE) { - head = eina_inlist_remove(head, ebo); + head = eina_inlist_remove(head, EINA_INLIST_GET(ebo)); free(ebo); } } @@ -392,7 +392,7 @@ ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE; - head = eina_inlist_prepend(head, ebo); + head = eina_inlist_prepend(head, EINA_INLIST_GET(ebo)); } if (i == 500) @@ -416,7 +416,7 @@ tmp = tmp->next; if (ebo->keep == EINA_FALSE) { - head = eina_inlist_remove(head, ebo); + head = eina_inlist_remove(head, EINA_INLIST_GET(ebo)); free(ebo); } } |
From: Enlightenment S. <no-...@en...> - 2008-09-22 14:27:58
|
Log: Add benchmark for evas (also add ecore bench, but it's deactivated by default, as i can't run it on my computer). Author: cedric Date: 2008-09-22 07:27:50 -0700 (Mon, 22 Sep 2008) New Revision: 36170 Modified: trunk/PROTO/eina/src/tests/eina_bench_array.c Modified: trunk/PROTO/eina/src/tests/eina_bench_array.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_bench_array.c 2008-09-22 14:23:15 UTC (rev 36169) +++ trunk/PROTO/eina/src/tests/eina_bench_array.c 2008-09-22 14:27:50 UTC (rev 36170) @@ -35,6 +35,7 @@ #ifdef EINA_BENCH_HAVE_ECORE #include <Ecore.h> +#include <Ecore_Data.h> #endif #include "eina_bench.h" @@ -560,6 +561,143 @@ } #endif +#ifdef EINA_BENCH_HAVE_EVAS +static void +eina_bench_evas_list_4evas_render(int request) +{ + Evas_List *list = NULL; + Evas_List *tmp; + Eina_Bench_Object *ebo; + int i; + int j; + + evas_init(); + + for (i = 0; i < 1000; ++i) + { + for (j = 0; j < request; ++j) + { + ebo = malloc(sizeof (Eina_Bench_Object)); + if (!ebo) continue ; + + ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE; + + list = evas_list_prepend(list, ebo); + } + + if (i == 500) + { + while (list) + { + free(evas_list_data(list)); + list = evas_list_remove_list(list, list); + } + } + else + { + if (i % 30 == 0) + { + tmp = list; + while (tmp) + { + Evas_List *reminder = tmp; + + ebo = evas_list_data(reminder); + tmp = evas_list_next(tmp); + + if (ebo->keep == EINA_FALSE) + { + list = evas_list_remove_list(list, reminder); + free(ebo); + } + } + } + } + + for (tmp = list; tmp; tmp = evas_list_next(tmp)) + { + ebo = evas_list_data(tmp); + + ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE; + } + } + + while (list) + { + free(evas_list_data(list)); + list = evas_list_remove_list(list, list); + } + + evas_shutdown(); +} +#endif + +#ifdef EINA_BENCH_HAVE_ECORE +#if 0 +static void +_eina_ecore_for_each_remove(void *value, void *user_data) +{ + Eina_Bench_Object *ebo = value; + Ecore_List *list = user_data; + + if (ebo->keep == EINA_FALSE) + ecore_list_remove_destroy(list); +} + +static void +_eina_ecore_for_each_rand(void *value, __UNUSED__ void *user_data) +{ + Eina_Bench_Object *ebo = value; + + ebo->keep = rand() < (RAND_MAX / 2) ? ebo->keep : EINA_FALSE; +} + +static void +eina_bench_ecore_list_4evas_render(int request) +{ + Ecore_List *list = NULL; + Eina_Bench_Object *ebo; + int i; + int j; + + ecore_init(); + list = ecore_list_new(); + ecore_list_free_cb_set(list, free); + + for (i = 0; i < 1000; ++i) + { + for (j = 0; j < request; ++j) + { + ebo = malloc(sizeof (Eina_Bench_Object)); + if (!ebo) continue ; + + ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE; + + ecore_list_prepend(list, ebo); + } + + if (i == 500) + { + ecore_list_clear(list); + } + else + { + if (i % 30 == 0) + { + ecore_list_for_each(list, _eina_ecore_for_each_remove, list); + } + } + + ecore_list_for_each(list, _eina_ecore_for_each_rand, list); + } + + ecore_list_destroy(list); + + ecore_shutdown(); +} +#endif +#endif + void eina_bench_array(Eina_Benchmark *bench) { eina_benchmark_register(bench, "array-inline", EINA_BENCHMARK(eina_bench_array_4evas_render_inline), 200, 4000, 100); @@ -572,5 +710,13 @@ eina_benchmark_register(bench, "glist", EINA_BENCHMARK(eina_bench_glist_4evas_render), 200, 4000, 100); eina_benchmark_register(bench, "gptrarray", EINA_BENCHMARK(eina_bench_gptrarray_4evas_render), 200, 4000, 100); #endif +#ifdef EINA_BENCH_HAVE_EVAS + eina_benchmark_register(bench, "evas", EINA_BENCHMARK(eina_bench_evas_list_4evas_render), 200, 4000, 100); +#endif +#ifdef EINA_BENCH_HAVE_ECORE +#if 0 + eina_benchmark_register(bench, "ecore", EINA_BENCHMARK(eina_bench_ecore_list_4evas_render), 200, 4000, 100); +#endif +#endif } |
From: Enlightenment S. <no-...@en...> - 2008-09-24 17:17:32
|
Log: Fix test due to mempool internal change. Author: cedric Date: 2008-09-24 10:17:22 -0700 (Wed, 24 Sep 2008) New Revision: 36223 Modified: trunk/PROTO/eina/src/tests/eina_test_main.c Modified: trunk/PROTO/eina/src/tests/eina_test_main.c =================================================================== --- trunk/PROTO/eina/src/tests/eina_test_main.c 2008-09-24 17:14:29 UTC (rev 36222) +++ trunk/PROTO/eina/src/tests/eina_test_main.c 2008-09-24 17:17:22 UTC (rev 36223) @@ -19,10 +19,13 @@ #include "Eina.h" #include "eina_suite.h" +#include <stdio.h> START_TEST(eina_simple) { - fail_if(!eina_init()); - fail_if(eina_shutdown() != 0); + /* Eina_error as already been initialized by eina_hash + that was called by eina_mempool_init that's why we don't have 0 here */ + fail_if(eina_init() != 2); + fail_if(eina_shutdown() != 1); } END_TEST |