|
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
# ........ .......... ..................... ........................................... 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 |
notomono_comp.png
Description: notomono_comp.png
notomono_comp_expanded.png
Description: notomono_comp_expanded.png
arial_comp.png
Description: arial_comp.png
arial_comp_expanded.png
Description: arial_comp_expanded.png
ft_265_noto_1000perf.data
Description: ft_265_noto_1000perf.data
perf_265_arial_10.txt
Description: perf_265_arial_10.txt
perf_265_arial_100.txt
Description: perf_265_arial_100.txt
perf_265_arial_1000.txt
Description: perf_265_arial_1000.txt
perf_265_noto_10.txt
Description: perf_265_noto_10.txt
perf_265_noto_100.txt
Description: perf_265_noto_100.txt
perf_265_noto_1000.txt
Description: perf_265_noto_1000.txt
ft_265_arial_10perf.data
Description: ft_265_arial_10perf.data
ft_265_arial_100perf.data
Description: ft_265_arial_100perf.data
ft_265_arial_1000perf.data
Description: ft_265_arial_1000perf.data
ft_265_noto_10perf.data
Description: ft_265_noto_10perf.data
ft_265_noto_100perf.data
Description: ft_265_noto_100perf.data
ft_master_noto_100perf.data
Description: ft_master_noto_100perf.data
ft_master_noto_1000perf.data
Description: ft_master_noto_1000perf.data
perf_master_arial_10.txt
Description: perf_master_arial_10.txt
perf_master_arial_100.txt
Description: perf_master_arial_100.txt
perf_master_arial_1000.txt
Description: perf_master_arial_1000.txt
perf_master_noto_10.txt
Description: perf_master_noto_10.txt
perf_master_noto_100.txt
Description: perf_master_noto_100.txt
perf_master_noto_1000.txt
Description: perf_master_noto_1000.txt
ft_master_arial_10perf.data
Description: ft_master_arial_10perf.data
ft_master_arial_100perf.data
Description: ft_master_arial_100perf.data
ft_master_arial_1000perf.data
Description: ft_master_arial_1000perf.data
ft_master_noto_10perf.data
Description: ft_master_noto_10perf.data
[Prev in Thread] | Current Thread | [Next in Thread] |