Hi devs, Here we are, eina (tool in Catalan) is now ready for prime time all over the EFL. Eina is provided with a test covering around 96% of the code, a doc written mostly by Vincent and a benchmark suite that make some attempt to mimic Enlightenment use of the data type.
Runing the benchmark on two different computer let us discover some interesting fact. So I will give pointer to both result, where [a] will be an athlon 64 at 2.4Ghz with 512KB of cache and [b] will be Core 2 Duo 2.66Ghz with 6MB of cache. So what does Eina provides, first it provide some basic data type : - Shared string: provide a way to reduce the number of duplicated strings kept in ram. It's a replacement for both evas and ecore stringshare with the same API. It's faster and scale better than the original one and we are also faster than glib on this. [a] http://imagebin.org/28089 [b] http://imagebin.org/28091 - Array: provide an interface to replace evas array and in the same time some kind of a stack with push/pop mecanism. The destruction implementation should be faster and more adapted to evas use than the current one used by evas. [a] http://imagebin.org/28090 [b] http://imagebin.org/28092 - List: provide a double linked list with fast count and last like evas. I used sort to measure speed of this implementation, as all the implementation we will compare against use the same kind of merge sort, and it manipulate a lot of list pointers. [a] http://imagebin.org/28093 [b] http://imagebin.org/28094 - Hash: It provide a hash table, the API is more like ecore and provide a way to provide your own hash function. [a] http://imagebin.org/28095 [b] http://imagebin.org/28096 - Inlined list: provide list that should be included directly inside the structure of the object you want to manipulate. - Red Black tree: provide a binary tree implementation with insertion/removal/lookup that should be included directly inside the structure of the object of the tree. All this container come with an iterator (no removal authorized during iteration or it could break) and some of them with an accessor when it means something. As eina need for it's internal some function that could be usefull for other, we are also exposing and providing the following tool : - Convert: provide convertion function from integer to/from string and double to/from string. [a] http://imagebin.org/28097 [b] http://imagebin.org/28098 - Counter: provide a way to precisely mesure timing for benchmark typically. - Benchmark: provide the API used by eina benchmark suite to others. - File: provide some basic function usefull when manipulating directory listing. - Module: provide a set of function that should give every one what they wanted. - Error: provide an unified interface to error checking/generation. - Memory pool: provide function for testing impact of other mempool (speed and use). It is currently used in eina_list, but depending on your configuration it could be some time better to use the default one (It was the case for computer [b]). For best speed, eina should be compiled with CFLAGS="-pipe -O3" ./configure --disable-magic-debug and also with --disable-default-mempool for some system. So now, what remain in the TODO. Still some doc, but mainly compiling and running it on more computer/OS would be a good thing. Reviewing the API and it's internal too. It could be part of the autobuild too. And if nobody complain about it, eina should be moved out of PROTO at the end of the week. Perhaps making the autotools of each efl that could use it depend on eina in the same move, so that people working on it could easily replace old code with eina one. I already identified eet/evas/ecore/edje/efreet/e as the one that could benefit from a move (reduction in size code and speed improvement). Have fun ! -- Cedric BAIL ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel