On Thu, Jan 17, 2013 at 10:34 PM, Gustavo Sverzut Barbieri
<barbi...@profusion.mobi> wrote:
> On Thursday, January 17, 2013, Cedric BAIL wrote:
>> On Thu, Jan 17, 2013 at 9:37 PM, Gustavo Sverzut Barbieri
>> <barbi...@profusion.mobi <javascript:;>> wrote:
>> > On Thursday, January 17, 2013, Cedric BAIL wrote:
>> >> On Thu, Jan 17, 2013 at 7:28 PM, Gustavo Sverzut Barbieri
>> >> <barbi...@profusion.mobi <javascript:;> <javascript:;>> wrote:
>> >> > On Thursday, January 17, 2013, Enlightenment SVN wrote:
>> >> >> Log:
>> >> >> efl: stupid micro optimization.
>> >> >>
>> >> >>   This single test accounted for 1% of my terminology benchmark.
>> >> >>   I am considering moving evas_string_char_next_get and
>> >> >>   eina_unicode_utf8_get_next to become inline as their function
>> >> >>   entry/exit point account for 3% of the same benchmark.
>> >> >>
>> >> >>   The biggest win would be to get rid of the memcpy
>> _termpty_text_copy
>> >> >>   that account for 16%.
>> >> >>
>> >> >>   In the micro optimization part, we also still do to much malloc
>> >> >>   in font_draw_prepare as we don't recycle the array there and
>> account
>> >> >>   for 3% of the benchmark in malloc/free there. In the same ballpark
>> >> >>   _text_save_top account for 2% of the time in malloc/free.
>> >> >>
>> >> >>   In that same benchmark, evas_object_textgrid_render account for 5%
>> >> >>   where 4% of its time is spend in evas_common_font_draw_prepare. At
>> >> this
>> >> >>   point I am not sure that rewriting textgrid is gona help us at
>> all. We
>> >> >>   will win almost as much by just inlining the get_next things in
>> evas
>> >> >>   and eina for a minute of development time.
>> >> >
>> >> > It's a bit naive to think so, because you'd be able to change the
>> >> algorithm
>> >> > and avoid conversions. All in all you could just give engine the same
>> >> array
>> >> > that terminology fills (cell row array), together with region and
>> context
>> >> > (clipper, cutouts) and glyph bitmap.
>> >> >
>> >> > Particularly the glyph bitmap could be optimized as its an int hash,
>> but
>> >> we
>> >> > know A-Za-z0-9 ate hot, we could have ASCII printable range in an
>> array
>> >> > while everything else goes to a hash
>> >>
>> >> Time spend in evas_common_font_draw 4%. Time spend in
>> >> evas_object_textgrid_*: > 2%.
>> >> Time spend in _cb_fb_read : 82% with evas_string_char_next_get being
>> >> 15% and memcpy 18%.
>> >>
>> >> I don't see how optimizing textgrid is going to change this number at
>> all.
>> >
>> > You'd not be doing these at all. That's why/how.
>>
>> What do you mean by "these" ? I am going to redo the benchmark with
>> perf on another computer to see if there is something else.
>
>
> These calls. If you do the way I imagine you give the screen (array of
> cells) to the render much like the way you give pixels to image. There is
> no need to call a bunch of things, like no need to create the text props
> and such. All you need is the cell info (palette index and attributes), the
> palette contents and a way to convert Unicode -> bitmap.

All the cost of this 4% goes into the blitting, that you can't win. So
you are basically going after a 2% improvement, that you can maybe
reduce a little but not much as we don't create the text props at all
in more than 99% of the case and the text props is a mapping from
unicode to bitmap that are recycled very often. I really think you are
focusing on the wrong thing here.
--
Cedric BAIL

------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to