I felt latest efl has slowed down after life-cycle patch. here is simple test result.
EINA_FREEQ_BYPASS=1 ELM_TEST_AUTOBOUNCE=100 elementary_test -to "Scroller 2"
Before life-cycle patch
commit: 0090384ef5ac9f9e939874a1bbf233298c9db930 (elm_ctxpopup: prevent a giant load of errors)
`NS since frame 2 = 46685553376 , 1013 frames = 46086429 / frame`
After life-cycle patch
commit: 311e35a0dd34a9fac6dacce5118a09d07f159d76 (elementary: prevent model from being invalidated when their parent model get destroyed.)
`NS since frame 2 = 47215418029 , 103 frames = 458402116 / frame`
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
`NS since frame 2 = 47289619532 , 992 frames = 47670987 / 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?