forked from enlightenment/efl
Carsten Haitzler
51638afbeb
several calls, specifically evas_object_change_reset, evas_object_cur_prev, and evas_object_clip_changes_clean that are called directly or indirectly as part of evas render on at least every active object if not more, were doing full eo obj lookups when their calling functions already all had the eo protected data looked up. tha's silly and just adds overhead we don't need. my test dropped _eo_obj_pointer_get overhead in perf profiles from 4.48% to 2.65%. see: 4.48% libeo.so.1.18.99 [.] _eo_obj_pointer_get 4.23% libevas.so.1.18.99 [.] evas_render_updates_internal 2.61% libevas.so.1.18.99 [.] evas_render_updates_internal_loop 1.68% libeo.so.1.18.99 [.] efl_data_scope_get 1.57% libc-2.24.so [.] _int_malloc 1.42% libevas.so.1.18.99 [.] evas_object_smart_changed_get 1.09% libevas.so.1.18.99 [.] evas_object_clip_recalc.part.37 1.08% libpthread-2.24.so [.] pthread_getspecific 1.05% libevas.so.1.18.99 [.] efl_canvas_object_class_get 1.01% libevas.so.1.18.99 [.] evas_object_cur_prev 0.99% libeo.so.1.18.99 [.] _efl_object_event_callback_legacy_call 0.87% libevas.so.1.18.99 [.] _evas_render_phase1_object_ctx_render_cache_append 0.82% libpthread-2.24.so [.] pthread_mutex_lock 0.81% libevas.so.1.18.99 [.] _evas_render_phase1_object_process 0.79% libc-2.24.so [.] _int_free vs now the improved: 4.82% libevas.so.1.18.99 [.] evas_render_updates_internal 3.44% libevas.so.1.18.99 [.] evas_render_updates_internal_loop 2.65% libeo.so.1.18.99 [.] _eo_obj_pointer_get 2.22% libc-2.24.so [.] _int_malloc 1.46% libevas.so.1.18.99 [.] evas_object_smart_changed_get 1.04% libeo.so.1.18.99 [.] _efl_object_event_callback_legacy_call 1.03% libevas.so.1.18.99 [.] _evas_render_phase1_object_ctx_render_cache_append 0.97% libeina.so.1.18.99 [.] eina_chained_mempool_malloc 0.93% libevas.so.1.18.99 [.] evas_object_clip_recalc.part.37 0.92% libpthread-2.24.so [.] pthread_mutex_lock 0.91% libevas.so.1.18.99 [.] _evas_render_phase1_object_process 0.84% libc-2.24.so [.] _int_free 0.84% libevas.so.1.18.99 [.] evas_object_cur_prev 0.83% libeina.so.1.18.99 [.] eina_chained_mempool_free 0.80% libeo.so.1.18.99 [.] efl_data_scope_get of course other things "increase their percentage" as oe overhead now dropped, and things seem to move around a bit, but it does make sense to do this with no downsides i can see as we already are accessing the protected data ptr in the parent func. |
||
---|---|---|
.. | ||
benchmarks | ||
bin | ||
bindings | ||
edje_external | ||
examples | ||
generic | ||
lib | ||
modules | ||
scripts | ||
static_libs | ||
tests | ||
utils/ecore | ||
wayland_protocol | ||
CMakeLists.txt | ||
CMakeLists_Eina.txt | ||
Makefile.am | ||
Makefile_Cxx.am | ||
Makefile_EPhysics.am | ||
Makefile_Ecore.am | ||
Makefile_Ecore_Audio.am | ||
Makefile_Ecore_Avahi.am | ||
Makefile_Ecore_Buffer.am | ||
Makefile_Ecore_Cocoa.am | ||
Makefile_Ecore_Con.am | ||
Makefile_Ecore_Drm.am | ||
Makefile_Ecore_Drm2.am | ||
Makefile_Ecore_Evas.am | ||
Makefile_Ecore_FB.am | ||
Makefile_Ecore_File.am | ||
Makefile_Ecore_IMF.am | ||
Makefile_Ecore_IMF_Evas.am | ||
Makefile_Ecore_Input.am | ||
Makefile_Ecore_Input_Evas.am | ||
Makefile_Ecore_Ipc.am | ||
Makefile_Ecore_Js.am | ||
Makefile_Ecore_Psl1ght.am | ||
Makefile_Ecore_SDL.am | ||
Makefile_Ecore_Wayland.am | ||
Makefile_Ecore_Win32.am | ||
Makefile_Ecore_Wl2.am | ||
Makefile_Ecore_X.am | ||
Makefile_Ector.am | ||
Makefile_Edje.am | ||
Makefile_Edje_Helper.am | ||
Makefile_Eet.am | ||
Makefile_Eet_Helper.am | ||
Makefile_Eeze.am | ||
Makefile_Efl.am | ||
Makefile_Efl_Js.am | ||
Makefile_Efreet.am | ||
Makefile_Eina.am | ||
Makefile_Eio.am | ||
Makefile_Eldbus.am | ||
Makefile_Elementary.am | ||
Makefile_Elocation.am | ||
Makefile_Elput.am | ||
Makefile_Elua.am | ||
Makefile_Elua_Helper.am | ||
Makefile_Embryo.am | ||
Makefile_Emile.am | ||
Makefile_Emotion.am | ||
Makefile_Eo.am | ||
Makefile_Eolian.am | ||
Makefile_Eolian_Cxx.am | ||
Makefile_Eolian_Cxx_Helper.am | ||
Makefile_Eolian_Files_Helper.am | ||
Makefile_Eolian_Helper.am | ||
Makefile_Eolian_Js.am | ||
Makefile_Eolian_Js_Helper.am | ||
Makefile_Escape.am | ||
Makefile_Ethumb.am | ||
Makefile_Ethumb_Client.am | ||
Makefile_Evas.am | ||
Makefile_Evil.am |