Bug 45347 - [EFL] Need to optimize Rendering
Summary: [EFL] Need to optimize Rendering
Status: RESOLVED WORKSFORME
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit EFL (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Linux
: P2 Enhancement
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-09-07 17:44 PDT by Ryuan Choi
Modified: 2011-01-06 09:19 PST (History)
4 users (show)

See Also:


Attachments
Patch (4.16 KB, patch)
2010-09-07 19:44 PDT, Ryuan Choi
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Ryuan Choi 2010-09-07 17:44:11 PDT
I tested how many rect was rendered.
EFL: until finishing google.com in EWebLauncher
[EFL] 6 will be drawn
[EFL] 0 will be drawn
[EFL] 11 will be drawn
[EFL] 2 will be drawn
[EFL] 4 will be drawn
[EFL] 4 will be drawn
[EFL] 4 will be drawn
[EFL] 2 will be drawn
[EFL] 5 will be drawn
[EFL] 14 will be drawn

GTK+: same condition
[GTK+] 1 rect will be drawn
[GTK+] 1 rect will be drawn
[GTK+] 1 rect will be drawn
[GTK+] 1 rect will be drawn
[GTK+] 1 rect will be drawn
[GTK+] 1 rect will be drawn
[GTK+] 1 rect will be drawn

Although count is good factor to measure render performance,
I believe that EWK have point of improvement.

I suggest below.
1. optimize code 
  a) remove 0 case, 
  b) move below code out of EINA_ITERATOR_FOREACH
     ewk_view_paint_context_translate(ctxt, -sx, -sy);

2. add shouldCoalesce like GTK+.

3. use cairo_region included in Cairo 1.10.0 with some logic.
  currently, EWK just add rectangle without considering region.
Comment 1 Ryuan Choi 2010-09-07 19:44:29 PDT
Created attachment 66832 [details]
Patch
Comment 2 Ryuan Choi 2010-09-07 19:51:29 PDT
(In reply to comment #1)
> Created an attachment (id=66832) [details]
> Patch

This patch is for 1 and 2 I suggested.
I tested this in http://www.naver.com
number is # of rectangles calling paint_contents.

[without this patch]
6 should be rendered
0 should be rendered
10 should be rendered
0 should be rendered
9 should be rendered
0 should be rendered
4 should be rendered
0 should be rendered
7 should be rendered
0 should be rendered
20 should be rendered
124 should be rendered
0 should be rendered
128 should be rendered
5 should be rendered
16 should be rendered
10 should be rendered
0 should be rendered
29 should be rendered
53 should be rendered
0 should be rendered
6 should be rendered
3 should be rendered
17 should be rendered
1 should be rendered
1 should be rendered
8 should be rendered
4 should be rendered
11 should be rendered
1 should be rendered
1 should be rendered
1 should be rendered
1 should be rendered
2 should be rendered
2 should be rendered
2 should be rendered
2 should be rendered
2 should be rendered
2 should be rendered
2 should be rendered
1 should be rendered
1 should be rendered
26 should be rendered
0 should be rendered
1 should be rendered


[with this patch]
6 should be rendered
10 should be rendered
7 should be rendered
1 should be rendered
2 should be rendered
6 should be rendered
18 should be rendered
24 should be rendered
1 should be rendered
36 should be rendered
16 should be rendered
1 should be rendered
10 should be rendered
1 should be rendered
1 should be rendered
27 should be rendered
4 should be rendered
3 should be rendered
10 should be rendered
4 should be rendered
4 should be rendered
2 should be rendered
1 should be rendered
4 should be rendered
1 should be rendered
2 should be rendered
2 should be rendered
2 should be rendered
2 should be rendered
11 should be rendered
1 should be rendered
1 should be rendered
1 should be rendered
1 should be rendered
2 should be rendered
2 should be rendered
2 should be rendered
2 should be rendered
2 should be rendered
2 should be rendered
3 should be rendered
Comment 3 Ryuan Choi 2010-09-07 19:52:51 PDT
(In reply to comment #0)
> I tested how many rect was rendered.
> EFL: until finishing google.com in EWebLauncher
> [EFL] 6 will be drawn
> [EFL] 0 will be drawn
> [EFL] 11 will be drawn
> [EFL] 2 will be drawn
> [EFL] 4 will be drawn
> [EFL] 4 will be drawn
> [EFL] 4 will be drawn
> [EFL] 2 will be drawn
> [EFL] 5 will be drawn
> [EFL] 14 will be drawn
> 
> GTK+: same condition
> [GTK+] 1 rect will be drawn
> [GTK+] 1 rect will be drawn
> [GTK+] 1 rect will be drawn
> [GTK+] 1 rect will be drawn
> [GTK+] 1 rect will be drawn
> [GTK+] 1 rect will be drawn
> [GTK+] 1 rect will be drawn
> 
> Although count is good factor to measure render performance,
Although count is not a good factor to measure render performance,
> I believe that EWK have point of improvement.
> 
> I suggest below.
> 1. optimize code 
>   a) remove 0 case, 
>   b) move below code out of EINA_ITERATOR_FOREACH
>      ewk_view_paint_context_translate(ctxt, -sx, -sy);
> 
> 2. add shouldCoalesce like GTK+.
> 
> 3. use cairo_region included in Cairo 1.10.0 with some logic.
>   currently, EWK just add rectangle without considering region.
Comment 4 Lucas De Marchi 2011-01-06 09:19:58 PST
We need better measurements for this.