freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Rendering performance comparison between FreeType 2.6.5 and current `mas


From: Anurag Thakur
Subject: Rendering performance comparison between FreeType 2.6.5 and current `master`
Date: Mon, 5 Sep 2022 17:09:37 +0000

Hi all!

 

As part of my GSoC project, I ran some benchmarks comparing the performance of FreeType version 2.6.5 (released in 2016) with the current master, here are the results:

 

NotoMono Regular font:

 

(notomono_comp.png)

 

(notomono_comp_expanded.png)

 

 

Arial Font:

(arial_comp.png)

 

(arial_comp_expanded.png)

 

(Generated using: “ftbench -b c -s size font.ttf”)

 

The current version is consistently about 50% faster at all sizes, demonstrating the effort that has gone into improving FreeType.

 

I also ran the perf utility, results attached (.data files are the binaries generated by perf, .txt files are human readable output generated by perf report)

 

(Generated using “perf record ftbench -b c -s size font.ttf”)

Some things to observe:

 

perf_master_noto10.txt:

# Overhead  Command     Shared Object          Symbol                                    

# ........  ..........  .....................  ...........................................
    20.35%  lt-ftbench  libfreetype.so.6.18.3  [.] TT_RunIns

    10.69%  lt-ftbench  libfreetype.so.6.18.3  [.] gray_render_line

     5.06%  lt-ftbench  libfreetype.so.6.18.3  [.] Ins_IUP.constprop.0

     5.05%  lt-ftbench  libfreetype.so.6.18.3  [.] TT_Load_Simple_Glyph

     4.86%  lt-ftbench  libfreetype.so.6.18.3  [.] _iup_worker_interpolate

 

perf_master_noto100.txt:

# Overhead  Command     Shared Object          Symbol                                    

# ........  ..........  .....................  ...........................................

    25.62%  lt-ftbench  libfreetype.so.6.18.3  [.] gray_render_line

    17.21%  lt-ftbench  libfreetype.so.6.18.3  [.] gray_set_cell

    16.02%  lt-ftbench  libfreetype.so.6.18.3  [.] gray_convert_glyph

     8.67%  lt-ftbench  libfreetype.so.6.18.3  [.] TT_RunIns

     4.09%  lt-ftbench  libfreetype.so.6.18.3  [.] gray_conic_to

 

At small sizes, the “TT_RunIns” function dominates, while at larger ones, the render line function is prominent

 

Other notable functions are ` Ins_IUP.constprop.0`,`_iup_worker_interpolate` which are not prominent at large sizes

 

If someone could elaborate on these functions, that would be great 😊

 

Comparing the version 2.6.5 to current `master`:

perf_master_noto10.txt

# Overhead  Command     Shared Object          Symbol                                    

# ........  ..........  .....................  ...........................................

#

    20.35%  lt-ftbench  libfreetype.so.6.18.3  [.] TT_RunIns

    10.69%  lt-ftbench  libfreetype.so.6.18.3  [.] gray_render_line

     5.06%  lt-ftbench  libfreetype.so.6.18.3  [.] Ins_IUP.constprop.0

     5.05%  lt-ftbench  libfreetype.so.6.18.3  [.] TT_Load_Simple_Glyph

     4.86%  lt-ftbench  libfreetype.so.6.18.3  [.] _iup_worker_interpolate

     4.28%  lt-ftbench  libfreetype.so.6.18.3  [.] gray_set_cell

     3.06%  lt-ftbench  libfreetype.so.6.18.3  [.] load_truetype_glyph

     2.93%  lt-ftbench  libfreetype.so.6.18.3  [.] gray_convert_glyph

     2.81%  lt-ftbench  libfreetype.so.6.18.3  [.] gray_conic_to

     2.52%  lt-ftbench  libfreetype.so.6.18.3  [.] FT_Outline_Get_CBox

     2.17%  lt-ftbench  libfreetype.so.6.18.3  [.] FT_Outline_Decompose

     2.11%  lt-ftbench  libfreetype.so.6.18.3  [.] FT_MulDiv

     1.64%  lt-ftbench  libfreetype.so.6.18.3  [.] Ins_DELTAP.constprop.0

     1.22%  lt-ftbench  libfreetype.so.6.18.3  [.] FT_DivFix

     1.10%  lt-ftbench  libfreetype.so.6.18.3  [.] Compute_Point_Displacement.constprop.0

     1.07%  lt-ftbench  libfreetype.so.6.18.3  [.] TT_Hint_Glyph

     1.05%  lt-ftbench  libfreetype.so.6.18.3  [.] Move_Zp2_Point

     1.03%  lt-ftbench  libfreetype.so.6.18.3  [.] Ins_IP.constprop.0

 

perf_265_noto_10.txt:

 

# Overhead  Command     Shared Object          Symbol                                    

# ........  ..........  .....................  ...........................................

#

    24.69%  lt-ftbench  libfreetype.so.6.12.5  [.] TT_RunIns

    13.22%  lt-ftbench  libfreetype.so.6.12.5  [.] gray_render_line

     7.93%  lt-ftbench  [unknown]              [k] 0xffffffff82475600

     5.98%  lt-ftbench  libfreetype.so.6.12.5  [.] gray_record_cell

     4.70%  lt-ftbench  libfreetype.so.6.12.5  [.] TT_Load_Simple_Glyph

     4.47%  lt-ftbench  libfreetype.so.6.12.5  [.] _iup_worker_interpolate

     2.75%  lt-ftbench  libfreetype.so.6.12.5  [.] load_truetype_glyph

     2.73%  lt-ftbench  libfreetype.so.6.12.5  [.] gray_convert_glyph

     2.65%  lt-ftbench  libfreetype.so.6.12.5  [.] gray_render_conic.isra.0

     2.56%  lt-ftbench  libfreetype.so.6.12.5  [.] gray_hline

     2.35%  lt-ftbench  libfreetype.so.6.12.5  [.] FT_Outline_Decompose

     1.90%  lt-ftbench  libfreetype.so.6.12.5  [.] FT_MulDiv

     1.54%  lt-ftbench  libfreetype.so.6.12.5  [.] Ins_DELTAP.constprop.0

     1.35%  lt-ftbench  libfreetype.so.6.12.5  [.] gray_render_span

     1.30%  lt-ftbench  libfreetype.so.6.12.5  [.] Compute_Point_Displacement.constprop.0

     1.30%  lt-ftbench  libfreetype.so.6.12.5  [.] gray_set_cell

     1.14%  lt-ftbench  libfreetype.so.6.12.5  [.] FT_Outline_Get_CBox

 

The most expensive functions seem mostly the same, except for ` Ins_IUP.constprop.0`

 

This is my first time using the perf utility so I might have missed something.

 

Please let me know if there are other/better ways of benchmarking FreeType or if I missed anything.

 

Regards,

Anurag

Attachment: notomono_comp.png
Description: notomono_comp.png

Attachment: notomono_comp_expanded.png
Description: notomono_comp_expanded.png

Attachment: arial_comp.png
Description: arial_comp.png

Attachment: arial_comp_expanded.png
Description: arial_comp_expanded.png

Attachment: ft_265_noto_1000perf.data
Description: ft_265_noto_1000perf.data

Attachment: perf_265_arial_10.txt
Description: perf_265_arial_10.txt

Attachment: perf_265_arial_100.txt
Description: perf_265_arial_100.txt

Attachment: perf_265_arial_1000.txt
Description: perf_265_arial_1000.txt

Attachment: perf_265_noto_10.txt
Description: perf_265_noto_10.txt

Attachment: perf_265_noto_100.txt
Description: perf_265_noto_100.txt

Attachment: perf_265_noto_1000.txt
Description: perf_265_noto_1000.txt

Attachment: ft_265_arial_10perf.data
Description: ft_265_arial_10perf.data

Attachment: ft_265_arial_100perf.data
Description: ft_265_arial_100perf.data

Attachment: ft_265_arial_1000perf.data
Description: ft_265_arial_1000perf.data

Attachment: ft_265_noto_10perf.data
Description: ft_265_noto_10perf.data

Attachment: ft_265_noto_100perf.data
Description: ft_265_noto_100perf.data

Attachment: ft_master_noto_100perf.data
Description: ft_master_noto_100perf.data

Attachment: ft_master_noto_1000perf.data
Description: ft_master_noto_1000perf.data

Attachment: perf_master_arial_10.txt
Description: perf_master_arial_10.txt

Attachment: perf_master_arial_100.txt
Description: perf_master_arial_100.txt

Attachment: perf_master_arial_1000.txt
Description: perf_master_arial_1000.txt

Attachment: perf_master_noto_10.txt
Description: perf_master_noto_10.txt

Attachment: perf_master_noto_100.txt
Description: perf_master_noto_100.txt

Attachment: perf_master_noto_1000.txt
Description: perf_master_noto_1000.txt

Attachment: ft_master_arial_10perf.data
Description: ft_master_arial_10perf.data

Attachment: ft_master_arial_100perf.data
Description: ft_master_arial_100perf.data

Attachment: ft_master_arial_1000perf.data
Description: ft_master_arial_1000perf.data

Attachment: ft_master_noto_10perf.data
Description: ft_master_noto_10perf.data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]