I felt latest efl has slowed down after life-cycle patch. here is simple test result.
ELM_FIRST_FRAME=T EINA_FREEQ_BYPASS=1 ELM_TEST_AUTOBOUNCE=100 elementary_test -to "Scroller 2"
EFL was compiled with gcc 5.4.0 with -O3 -g
CPU : Intel(R) Core(TM) i5 CPU M520 @ 2.40GHz
|Before life-cycle patch
|commit: 0090384ef5ac9f9e939874a1bbf233298c9db930 (elm_ctxpopup: prevent a giant load of errors)
|Startup time: '1528197797.861125' - '1528197797.119980' = '0.741145' sec
|NS since frame 2 = 47737910134 , **1407** frames = 33928862 / frame
|After life-cycle patch
|commit: 311e35a0dd34a9fac6dacce5118a09d07f159d76 (elementary: prevent model from being invalidated when their parent model get destroyed.)
|Startup time: '1528198974.667997' - '1528198973.679399' = '0.988598' sec
|NS since frame 2 = 44347578100 , **52** frames = 852838040 / frame
I lost 90% frames after life-cycle patch..
I tried to find reason to slow down, finally i found a commit that has problem.
|After revert a commit(ddccd9e)
|commit: 311e35a0dd34a9fac6dacce5118a09d07f159d76 (elementary: prevent model from being invalidated when their parent model get destroyed.) without ddccd9e
|Startup time: '1528199551.564900' - '1528199550.785635' = '0.779265' sec
|NS since frame 2 = 47904373707 , **1361** frames = 35197923 / frame
evas_walk/unwalk are called around 180,000times at elementary_test launch time and they are called around 100,000times at one time scrolling with mouse wheel.
Previous evas_walk/unwalk are just increment and decrement operators but now evas_walk/unwalk is efl_ref/unref function calls. (see ddccd9e)
I think it has a huge overhead but to restore evas_walk/unwalk is not best solution.
Does anybody can help to solve this problem?
|commit: 0090384e with D6244
|Startup time: '1528201565.419612' - '1528201564.614091' = '0.805521' sec
|NS since frame 2 = 47776926142 , **1062** frames = 44987689 / frame