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?