aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/evas/canvas/render2
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2017-02-04 11:31:55 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2017-02-04 11:49:56 +0900
commit51638afbebc225b5a550eb87a0e74c53d866ed2e (patch)
tree6e81cbbef92cd7d6379d659326b9dc1edbe34377 /src/lib/evas/canvas/render2
parentecore_evas: use ecore_timer_loop_add for idle timeout update (diff)
downloadefl-51638afbebc225b5a550eb87a0e74c53d866ed2e.tar.gz
evas render - drop eo overhead by using ptrs we already have
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.
Diffstat (limited to 'src/lib/evas/canvas/render2')
-rw-r--r--src/lib/evas/canvas/render2/evas_render2_th_main.c12
-rw-r--r--src/lib/evas/canvas/render2/evas_render2_updates_old.c4
2 files changed, 8 insertions, 8 deletions
diff --git a/src/lib/evas/canvas/render2/evas_render2_th_main.c b/src/lib/evas/canvas/render2/evas_render2_th_main.c
index 70d8973b86..12d204c86f 100644
--- a/src/lib/evas/canvas/render2/evas_render2_th_main.c
+++ b/src/lib/evas/canvas/render2/evas_render2_th_main.c
@@ -123,9 +123,9 @@ _evas_render2_th_main_obj_basic_walk_process(Evas_Public_Data *e,
updates, offx, offy);
if (obj->changed)
{
- evas_object_clip_changes_clean(eo_obj);
- evas_object_cur_prev(eo_obj);
- evas_object_change_reset(eo_obj);
+ evas_object_clip_changes_clean(obj);
+ evas_object_cur_prev(obj);
+ evas_object_change_reset(obj);
}
}
@@ -158,9 +158,9 @@ _evas_render2_th_main_obj_walk_process(Evas_Public_Data *e,
offx, offy, l + 1);
if (obj->changed)
{
- evas_object_clip_changes_clean(eo_obj);
- evas_object_cur_prev(eo_obj);
- evas_object_change_reset(eo_obj);
+ evas_object_clip_changes_clean(obj);
+ evas_object_cur_prev(obj);
+ evas_object_change_reset(obj);
}
}
else _evas_render2_th_main_obj_basic_walk_process(e, obj, updates,
diff --git a/src/lib/evas/canvas/render2/evas_render2_updates_old.c b/src/lib/evas/canvas/render2/evas_render2_updates_old.c
index b17b934730..5ab650bc91 100644
--- a/src/lib/evas/canvas/render2/evas_render2_updates_old.c
+++ b/src/lib/evas/canvas/render2/evas_render2_updates_old.c
@@ -19,7 +19,7 @@ _obj_basic_process(Evas_Public_Data *e,
obj->func->render_post(eo_obj, obj, obj->private_data);
obj->restack = EINA_FALSE;
obj->pre_render_done = EINA_FALSE;
- evas_object_change_reset(eo_obj);
+ evas_object_change_reset(obj);
}
static void
@@ -51,7 +51,7 @@ _obj_process(Evas_Public_Data *e,
obj->func->render_post(eo_obj, obj, obj->private_data);
obj->restack = EINA_FALSE;
obj->pre_render_done = EINA_FALSE;
- evas_object_change_reset(eo_obj);
+ evas_object_change_reset(obj);
}
else _obj_basic_process(e, obj, l);
}