From: Enlightenment S. <no-...@en...> - 2011-11-06 12:26:10
|
Log: ecore: improve ecore_con speed by using mempool. Author: cedric Date: 2011-11-06 04:26:00 -0800 (Sun, 06 Nov 2011) New Revision: 64814 Trac: http://trac.enlightenment.org/e/changeset/64814 Added: trunk/ecore/src/examples/ecore_client_bench.c trunk/ecore/src/examples/ecore_server_bench.c trunk/ecore/src/lib/ecore_con/ecore_con_alloc.c Removed: trunk/ecore/src/examples/client_bench.c trunk/ecore/src/examples/server_bench.c Modified: trunk/ecore/src/examples/Makefile.am trunk/ecore/src/lib/ecore_con/Makefile.am trunk/ecore/src/lib/ecore_con/ecore_con.c trunk/ecore/src/lib/ecore_con/ecore_con_private.h Modified: trunk/ecore/src/examples/Makefile.am =================================================================== --- trunk/ecore/src/examples/Makefile.am 2011-11-06 12:12:21 UTC (rev 64813) +++ trunk/ecore/src/examples/Makefile.am 2011-11-06 12:26:00 UTC (rev 64814) @@ -39,8 +39,8 @@ ecore_con_server_simple_example.c \ ecore_con_server_http_example.c \ ecore_con_client_simple_example.c \ - client_bench.c \ - server_bench.c \ + ecore_client_bench.c \ + ecore_server_bench.c \ ecore_con_client_example.c \ ecore_con_server_example.c \ ecore_fd_handler_gnutls_example.c \ @@ -91,7 +91,9 @@ ecore_evas_basics_example \ ecore_evas_buffer_example_01 \ ecore_evas_buffer_example_02 \ - ecore_evas_ews_example + ecore_evas_ews_example \ + ecore_client_bench \ + ecore_server_bench ecore_con_lookup_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la ecore_con_url_headers_example_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la @@ -103,5 +105,7 @@ ecore_evas_window_sizes_example_LDADD = $(ECOREBASELDADD) @EVAS_LIBS@ $(top_builddir)/src/lib/ecore_evas/libecore_evas.la ecore_evas_buffer_example_01_LDADD = $(ECOREBASELDADD) @EVAS_LIBS@ $(top_builddir)/src/lib/ecore_evas/libecore_evas.la ecore_evas_buffer_example_02_LDADD = $(ECOREBASELDADD) @EVAS_LIBS@ $(top_builddir)/src/lib/ecore_evas/libecore_evas.la +ecore_client_bench_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la +ecore_server_bench_LDADD = $(ECOREBASELDADD) $(top_builddir)/src/lib/ecore_con/libecore_con.la endif Modified: trunk/ecore/src/lib/ecore_con/Makefile.am =================================================================== --- trunk/ecore/src/lib/ecore_con/Makefile.am 2011-11-06 12:12:21 UTC (rev 64813) +++ trunk/ecore/src/lib/ecore_con/Makefile.am 2011-11-06 12:26:00 UTC (rev 64814) @@ -20,7 +20,8 @@ libecore_con_la_SOURCES = \ ecore_con.c \ ecore_con_ssl.c \ -ecore_con_url.c +ecore_con_url.c \ +ecore_con_alloc.c if ECORE_HAVE_WIN32 libecore_con_la_SOURCES += ecore_con_local_win32.c Modified: trunk/ecore/src/lib/ecore_con/ecore_con.c =================================================================== --- trunk/ecore/src/lib/ecore_con/ecore_con.c 2011-11-06 12:12:21 UTC (rev 64813) +++ trunk/ecore/src/lib/ecore_con/ecore_con.c 2011-11-06 12:26:00 UTC (rev 64814) @@ -143,6 +143,8 @@ return --_ecore_con_init_count; } + ecore_con_mempool_init(); + ECORE_CON_EVENT_CLIENT_ADD = ecore_event_type_new(); ECORE_CON_EVENT_CLIENT_DEL = ecore_event_type_new(); ECORE_CON_EVENT_SERVER_ADD = ecore_event_type_new(); @@ -178,6 +180,8 @@ EINA_LIST_FOREACH_SAFE(servers, l, l2, svr) _ecore_con_server_free(svr); + ecore_con_mempool_shutdown(); + ecore_con_info_shutdown(); ecore_con_ssl_shutdown(); eina_log_domain_unregister(_ecore_con_log_dom); @@ -932,7 +936,7 @@ Ecore_Con_Event_Server_Add *e; int ev = ECORE_CON_EVENT_SERVER_ADD; - e = calloc(1, sizeof(Ecore_Con_Event_Server_Add)); + e = ecore_con_event_server_add_alloc(); EINA_SAFETY_ON_NULL_RETURN(e); svr->event_count++; @@ -948,7 +952,7 @@ { Ecore_Con_Event_Server_Del *e; - e = calloc(1, sizeof(Ecore_Con_Event_Server_Del)); + e = ecore_con_event_server_del_alloc(); EINA_SAFETY_ON_NULL_RETURN(e); svr->event_count++; @@ -963,7 +967,7 @@ { Ecore_Con_Event_Server_Write *e; - e = malloc(sizeof(Ecore_Con_Event_Server_Write)); + e = ecore_con_event_server_write_alloc(); EINA_SAFETY_ON_NULL_RETURN(e); svr->event_count++; @@ -979,7 +983,7 @@ { Ecore_Con_Event_Server_Data *e; - e = malloc(sizeof(Ecore_Con_Event_Server_Data)); + e = ecore_con_event_server_data_alloc(); EINA_SAFETY_ON_NULL_RETURN(e); svr->event_count++; @@ -990,8 +994,8 @@ e->data = malloc(num); if (!e->data) { - ERR("alloc!"); - free(e); + ERR("server data allocation failure !"); + _ecore_con_event_server_data_free(NULL, e); return; } memcpy(e->data, buf, num); @@ -1009,7 +1013,7 @@ Ecore_Con_Event_Client_Add *e; int ev = ECORE_CON_EVENT_CLIENT_ADD; - e = calloc(1, sizeof(Ecore_Con_Event_Client_Add)); + e = ecore_con_event_client_add_alloc(); EINA_SAFETY_ON_NULL_RETURN(e); cl->event_count++; @@ -1027,7 +1031,7 @@ { Ecore_Con_Event_Client_Del *e; - e = calloc(1, sizeof(Ecore_Con_Event_Client_Del)); + e = ecore_con_event_client_del_alloc(); EINA_SAFETY_ON_NULL_RETURN(e); if (cl) @@ -1045,7 +1049,8 @@ ecore_con_event_client_write(Ecore_Con_Client *cl, int num) { Ecore_Con_Event_Client_Write *e; - e = malloc(sizeof(Ecore_Con_Event_Client_Write)); + + e = ecore_con_event_client_write_alloc(); EINA_SAFETY_ON_NULL_RETURN(e); cl->host_server->event_count++; @@ -1060,7 +1065,8 @@ ecore_con_event_client_data(Ecore_Con_Client *cl, unsigned char *buf, int num, Eina_Bool duplicate) { Ecore_Con_Event_Client_Data *e; - e = malloc(sizeof(Ecore_Con_Event_Client_Data)); + + e = ecore_con_event_client_data_alloc(); EINA_SAFETY_ON_NULL_RETURN(e); cl->host_server->event_count++; @@ -1072,8 +1078,8 @@ e->data = malloc(num); if (!e->data) { - free(cl->client_addr); - free(cl); + ERR("client data allocation failure !"); + _ecore_con_event_client_data_free(cl->host_server, e); return; } memcpy(e->data, buf, num); @@ -1097,7 +1103,7 @@ { Ecore_Con_Event_Server_Error *e; - e = calloc(1, sizeof(Ecore_Con_Event_Server_Error)); + e = ecore_con_event_server_error_alloc(); EINA_SAFETY_ON_NULL_RETURN(e); e->server = svr; @@ -1112,7 +1118,7 @@ { Ecore_Con_Event_Client_Error *e; - e = calloc(1, sizeof(Ecore_Con_Event_Client_Error)); + e = ecore_con_event_client_error_alloc(); EINA_SAFETY_ON_NULL_RETURN(e); e->client = cl; @@ -2348,7 +2354,7 @@ if ((svr->event_count <= 0) && (svr->delete_me)) _ecore_con_server_free(svr); - free(e); + ecore_con_event_client_add_free(e); } static void @@ -2367,7 +2373,7 @@ if ((svr->event_count <= 0) && (svr->delete_me)) _ecore_con_server_free(svr); - free(e); + ecore_con_event_client_del_free(e); } static void @@ -2385,7 +2391,7 @@ if ((svr->event_count <= 0) && (svr->delete_me)) _ecore_con_server_free(svr); - free(e); + ecore_con_event_client_write_free(e); } static void @@ -2408,7 +2414,7 @@ if ((svr->event_count <= 0) && (svr->delete_me)) _ecore_con_server_free(svr); - free(e); + ecore_con_event_client_data_free(e); } static void @@ -2422,7 +2428,7 @@ if ((e->server->event_count <= 0) && (e->server->delete_me)) _ecore_con_server_free(e->server); - free(e); + ecore_con_event_server_add_free(e); } static void @@ -2436,7 +2442,7 @@ if ((e->server->event_count <= 0) && (e->server->delete_me)) _ecore_con_server_free(e->server); - free(e); + ecore_con_event_server_del_free(e); } static void @@ -2448,7 +2454,7 @@ if ((e->server->event_count <= 0) && (e->server->delete_me)) _ecore_con_server_free(e->server); - free(e); + ecore_con_event_server_write_free(e); } static void @@ -2465,7 +2471,7 @@ if ((e->server->event_count <= 0) && (e->server->delete_me)) _ecore_con_server_free(e->server); - free(e); + ecore_con_event_server_data_free(e); } @@ -2476,7 +2482,8 @@ if ((e->server->event_count <= 0) && (e->server->delete_me)) _ecore_con_server_free(e->server); if (e->error) free(e->error); - free(e); + + ecore_con_event_server_error_free(e); } static void @@ -2489,8 +2496,8 @@ if ((svr->event_count <= 0) && (svr->delete_me)) _ecore_con_server_free(svr); if (e->error) free(e->error); - free(e); + ecore_con_event_client_error_free(e); } static void Modified: trunk/ecore/src/lib/ecore_con/ecore_con_private.h =================================================================== --- trunk/ecore/src/lib/ecore_con/ecore_con_private.h 2011-11-06 12:12:21 UTC (rev 64813) +++ trunk/ecore/src/lib/ecore_con/ecore_con_private.h 2011-11-06 12:26:00 UTC (rev 64814) @@ -298,5 +298,24 @@ struct addrinfo *hints); +#define GENERIC_ALLOC_FREE_HEADER(TYPE, Type) \ + TYPE *Type##_alloc(void); \ + void Type##_free(TYPE *e); +GENERIC_ALLOC_FREE_HEADER(Ecore_Con_Event_Client_Add, ecore_con_event_client_add); +GENERIC_ALLOC_FREE_HEADER(Ecore_Con_Event_Client_Del, ecore_con_event_client_del); +GENERIC_ALLOC_FREE_HEADER(Ecore_Con_Event_Client_Write, ecore_con_event_client_write); +GENERIC_ALLOC_FREE_HEADER(Ecore_Con_Event_Client_Data, ecore_con_event_client_data); +GENERIC_ALLOC_FREE_HEADER(Ecore_Con_Event_Server_Error, ecore_con_event_server_error); +GENERIC_ALLOC_FREE_HEADER(Ecore_Con_Event_Client_Error, ecore_con_event_client_error); +GENERIC_ALLOC_FREE_HEADER(Ecore_Con_Event_Server_Add, ecore_con_event_server_add); +GENERIC_ALLOC_FREE_HEADER(Ecore_Con_Event_Server_Del, ecore_con_event_server_del); +GENERIC_ALLOC_FREE_HEADER(Ecore_Con_Event_Server_Write, ecore_con_event_server_write); +GENERIC_ALLOC_FREE_HEADER(Ecore_Con_Event_Server_Data, ecore_con_event_server_data); + +void ecore_con_mempool_init(void); +void ecore_con_mempool_shutdown(void); + +#undef GENERIC_ALLOC_FREE_HEADER + #endif |