elm_genlist_item_prepend() is 100 times slower than elm_genlist_item_append() to add a hundred or so entries to an empty genlist. Freezing and thawing the genlist helps a bit but only halves the CPU time; that leaves a slowdown of 50.
On my (slow) machine I get the following CPU time usages:
- item_prepend + freeze/thaw : 2.10s
- item_append + freeze/thaw : 46ms
- item_prepend : 6.11s
- item_append : 52ms
I've done some poor man profiling and it seems that there is a lot of work done and thrown away immediately and done again. This wouldn't be surprising for item_prepend() but it should be handled a bit better in any case. Currently this seems to exercise eo and evas object creation and destruction an awful lot. This might be interesting as a benchmark for these. Unfortunately I don't have a reproducer that is written in C.
On a possibly related note, I haven't seen much info on the item recycling that was introduced in 1.18 and I'm wondering a lot about it.