Here is the perf analysis report.
edje part calculation consumes cpu cycle a lot.

     8.28%  elementary_test  libedje.so.1.8.99        [.]
_edje_part_recalc_single
     6.69%  elementary_test  libedje.so.1.8.99        [.] _edje_part_recalc
     5.29%  elementary_test  libeo.so.1.8.99          [.]
_eo_obj_pointer_get
     4.32%  elementary_test  libeo.so.1.8.99          [.] _eo_dov_internal
     4.29%  elementary_test  libedje.so.1.8.99        [.]
_edje_part_recalc_single_min_max
     3.85%  elementary_test  libedje.so.1.8.99        [.]
_edje_part_recalc_single_rel
     3.75%  elementary_test  libeo.so.1.8.99          [.] _eo_data_scope_get
     3.57%  elementary_test  libeina.so.1.8.99        [.]
eina_hash_superfast
     3.53%  elementary_test  libeo.so.1.8.99          [.] _dich_func_get
     3.51%  elementary_test  libedje.so.1.8.99        [.]
_edje_part_recalc_single_aspect
     2.73%  elementary_test  libeo.so.1.8.99          [.]
_eo_obj_dov_internal
     2.70%  elementary_test  libeo.so.1.8.99          [.]
_eo_kls_itr_func_get
     2.61%  elementary_test  libedje.so.1.8.99        [.]
_edje_text_recalc_apply
     2.53%  elementary_test  libeo.so.1.8.99          [.] _eo_op_internal
     2.42%  elementary_test  [kernel.kallsyms]        [k] 0xc10359d8
     2.03%  elementary_test  libeo.so.1.8.99          [.] eo_do_internal
     1.84%  elementary_test  libeina.so.1.8.99        [.]
_eina_string_key_length
     1.81%  elementary_test  libedje.so.1.8.99        [.] .L1100
     1.73%  elementary_test  libedje.so.1.8.99        [.]
_edje_part_recalc_single_map
     1.60%  elementary_test  libedje.so.1.8.99        [.]
_edje_part_recalc_single_min_length
     1.30%  elementary_test  libeo.so.1.8.99          [.] _eo_unref
     1.29%  elementary_test  libevas.so.1.8.99        [.] .L698
     1.19%  elementary_test  libeina.so.1.8.99        [.] eina_hash_find
     0.98%  elementary_test  libedje.so.1.8.99        [.]
_edje_part_recalc_single_min
     0.88%  elementary_test  libevas.so.1.8.99        [.] _size_get
     0.86%  elementary_test  libedje.so.1.8.99        [.]
_edje_part_recalc_single_max


    41.75%  libedje.so.1.8.99
    31.72%  libeo.so.1.8.99
    13.19%  libevas.so.1.8.99
     7.78%  libeina.so.1.8.99
     2.42%  [kernel.kallsyms]
     1.44%  libc-2.15.so
     1.12%  libpthread-2.15.so
     0.36%  libdbus-1.so.3.5.8
     0.13%  libelementary.so.1.8.99
     0.06%  libecore.so.1.8.99
     0.02%  ld-2.15.so

Daniel Juyung Seo (SeoZ)



On Mon, Feb 3, 2014 at 10:16 AM, Daniel Juyung Seo <[email protected]>wrote:

> Thanks for the nice patch!
>
>
> > datetime: Refactor to launch test_datetime little bit faster
>
> But the commit message should be changed to something like:
> > datetime: Enhance datetime launching time by reducing redundant
> calculation.
>
> Anyhow, datetime launching time is reduced but it is still slow... hmm.
> Need to analyze it more.
>
> Thanks.
>
> Daniel Juyung Seo (SeoZ)
>
>
>
> On Mon, Feb 3, 2014 at 9:13 AM, Ryuan Choi <[email protected]> wrote:
>
>> ryuan pushed a commit to branch master.
>>
>>
>> http://git.enlightenment.org/core/elementary.git/commit/?id=5cb9d937e6d5f73bd8dba00fdddbc830ab4192af
>>
>> commit 5cb9d937e6d5f73bd8dba00fdddbc830ab4192af
>> Author: Ryuan Choi <[email protected]>
>> Date:   Mon Feb 3 09:03:26 2014 +0900
>>
>>     datetime: Refactor to launch test_datetime little bit faster
>>
>>     - Added enabled_filed_count to avoid loop in
>> _elm_datetime_smart_sizing_eval().
>>       sizing_eval is called many times but field_count is only changed
>> when called
>>       _reload_format().
>>     - Moved redundant if statement out of the loop in
>> _field_list_display().
>>     - Removed redundant call from _elm_datetime_smart_add().
>>       _field_list_arrange() is called in _reload_format().
>> ---
>>  src/lib/elm_datetime.c        | 29 ++++++++++++++---------------
>>  src/lib/elm_widget_datetime.h |  1 +
>>  2 files changed, 15 insertions(+), 15 deletions(-)
>>
>> diff --git a/src/lib/elm_datetime.c b/src/lib/elm_datetime.c
>> index bb5ede9..5553b30 100644
>> --- a/src/lib/elm_datetime.c
>> +++ b/src/lib/elm_datetime.c
>> @@ -103,14 +103,13 @@ _field_list_display(Evas_Object *obj)
>>
>>     ELM_DATETIME_DATA_GET(obj, sd);
>>
>> +   if (!dt_mod || !dt_mod->field_value_display) return;
>> +
>>     for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
>>       {
>>          field = sd->field_list + idx;
>>          if (field->fmt_exist && field->visible)
>> -          {
>> -             if ((dt_mod) && (dt_mod->field_value_display))
>> -               dt_mod->field_value_display(sd->mod_data,
>> field->item_obj);
>> -          }
>> +          dt_mod->field_value_display(sd->mod_data, field->item_obj);
>>       }
>>  }
>>
>> @@ -326,6 +325,7 @@ _reload_format(Evas_Object *obj)
>>     _expand_format(dt_fmt);
>>
>>     // reset all the fields to disable state
>> +   sd->enabled_field_count = 0;
>>     for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
>>       {
>>          field = sd->field_list + idx;
>> @@ -336,6 +336,13 @@ _reload_format(Evas_Object *obj)
>>     field_count = _parse_format(obj, dt_fmt);
>>     free(dt_fmt);
>>
>> +   for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
>> +     {
>> +        field = sd->field_list + idx;
>> +        if (field->fmt_exist && field->visible)
>> +          sd->enabled_field_count++;
>> +     }
>> +
>>     // assign locations to disabled fields for uniform usage
>>     for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
>>       {
>> @@ -495,20 +502,14 @@ _elm_datetime_smart_disable(Eo *obj, void *_pd,
>> va_list *list)
>>  static void
>>  _elm_datetime_smart_sizing_eval(Eo *obj, void *_pd, va_list *list
>> EINA_UNUSED)
>>  {
>> -   Datetime_Field *field;
>>     Evas_Coord minw = -1, minh = -1;
>> -   unsigned int idx, field_count = 0;
>>
>>     Elm_Datetime_Smart_Data *sd = _pd;
>>     ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
>>
>> -   for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
>> -     {
>> -        field = sd->field_list + idx;
>> -        if ((field->visible) && (field->fmt_exist)) field_count++;
>> -     }
>> -   if (field_count)
>> -     elm_coords_finger_size_adjust(field_count, &minw, 1, &minh);
>> +   if (sd->enabled_field_count)
>> +     elm_coords_finger_size_adjust(sd->enabled_field_count, &minw, 1,
>> &minh);
>> +
>>     edje_object_size_min_restricted_calc
>>       (wd->resize_obj, &minw, &minh, minw, minh);
>>     evas_object_size_hint_min_set(obj, minw, minh);
>> @@ -836,8 +837,6 @@ _elm_datetime_smart_add(Eo *obj, void *_pd, va_list
>> *list EINA_UNUSED)
>>     _field_list_init(obj);
>>     _reload_format(obj);
>>
>> -   _field_list_arrange(obj);
>> -
>>     elm_widget_can_focus_set(obj, EINA_TRUE);
>>
>>     elm_layout_sizing_eval(obj);
>> diff --git a/src/lib/elm_widget_datetime.h b/src/lib/elm_widget_datetime.h
>> index f49b790..58e25ff 100644
>> --- a/src/lib/elm_widget_datetime.h
>> +++ b/src/lib/elm_widget_datetime.h
>> @@ -61,6 +61,7 @@ struct _Elm_Datetime_Smart_Data
>>     Elm_Datetime_Module_Data *mod_data;
>>     char                      format[ELM_DATETIME_MAX_FORMAT_LEN];
>>     Evas_Object              *access_obj;
>> +   int                       enabled_field_count;
>>     Eina_Bool                 user_format : 1;  /* whether user set
>>                                                  * format or default
>>                                                  * format. */
>>
>> --
>>
>>
>>
>
------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to