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

Reply via email to