Hİ,
I have edited the code aligning with the Hin-Tak’s suggestion. Here is the two
results pages, also pushed on gitlab.
Best,
Goksu
goksu.in
On 18 Aug 2023 14:02 +0300, Werner LEMBERG <w...@gnu.org>, wrote:
> > > What happens if you use, say, `-c 100000', just running the
> > > `Get_Char_Index` test? Are the percental timing differences then
> > > still that large?
> > Actually Get_Char_Index, on the three pages I have sent in the
> > prev. mail, is higher than 6% only 4 times out of 15 total. (which is
> > seem on other tests as well).
>
> Well, the thing is that IMHO the difference should be *much* smaller –
> your HTML pages show the execution of identical code on an identical
> machine, right?
>
> > about outliers, i splitted every tests into chuncks that is sized
> > 100. Made IQR calculations and calculated average time on valid
> > chunks. you can find the result in the attachment also pushed to
> > gitlab.
>
> Thanks. Hin-Tak gave additional suggestions how to possibly improve
> the removal of outliers.
>
> > also, since statistics and benchmarking are a sciences their self, i
> > am a bit struggling while approaching the problem as well as feels
> > like out of the gsoc project scope.
>
> Indeed, the focus lately shifted from a representational aspect to a
> more thorough approach how to handle benchmarks in general. You are
> done with the first part, more or less, and it looks fine. The
> latter, however, is definitely part of the GSoC project, too, and I'm
> surprised that you think this might not be so: What are benchmark
> timings good for if the returned values are completely meaningless?
>
> In most cases, a small performance optimization in FreeType might
> yield, say, an improvement of 1%. Right now, such a change would not
> be detectable at all if using the framework you are working on – it
> would be completely hidden by noise.
>
> To summarize: Benchmark comparisons only work if there is a sound
> mathematical foundation to reduce the noise. I don't ask you to
> reinvent the wheel, but please do some more internet research and
> check existing code how to tackle such problems. I'm 100% sure that
> such code already exists (for example, the Google benchmark stuff
> mentioned in a previous e-mail, scientific papers on arXiv, etc.,
> etc.) and can be easily used, adapted, and simplified for our
> purposes.
>
>
> Werner
Freetype Benchmark Results
Warning: Baseline and Benchmark have the same commit ID!
Info
Info | Baseline | Benchmark |
Parameters | -c 550 -w 50 | -c 550 -w 50 |
Commit ID | 35531481 | 35531481 |
Commit Date | 2023-08-18 02:04:38 +0300 | 2023-08-18 02:04:38 +0300 |
Branch | GSoC-2023-Ahmet | GSoC-2023-Ahmet |
* Average time for all iterations. Smaller values are better.
** N count in (x | y) format is for showing baseline and benchmark N counts seperately when they differs.
Total Results
Test | N | Baseline (µs) | Benchmark (µs) | Difference (%) |
Load | 250000 | 178180 | 190899 | -7.1 |
Load_Advances (Normal) | 250000 | 161654 | 159430 | 1.4 |
Load_Advances (Fast) | 250000 | 1047 | 1130 | -7.9 |
Load_Advances (Unscaled) | 250000 | 996 | 1006 | -1.0 |
Render | 250000 | 278410 | 276644 | 0.6 |
Get_Glyph | 250000 | 213564 | 209314 | 2.0 |
Get_Char_Index | 235000 | 1012 | 992 | 1.9 |
Iterate CMap | 2500 | 873 | 908 | -4.0 |
New_Face | 2500 | 12862 | 13004 | -1.1 |
Embolden | 250000 | 229042 | 226156 | 1.3 |
Stroke | 250000 | 956152 | 955616 | 0.1 |
Get_BBox | 250000 | 180922 | 177108 | 2.1 |
Get_CBox | 250000 | 211855 | 211493 | 0.2 |
New_Face & load glyph(s) | 250000 | 29090 | 28778 | 1.1 |
TOTAL | 2990000 | 2455658 | 2452479 | 0.1 |
Results for Roboto_subset.ttf
Test | N | * Baseline (µs) | * Benchmark (µs) | Difference (%) |
Load | 60000 | 29964 | 31568 | -5.3 |
Load_Advances (Normal) | 60000 | 29942 | 27342 | 8.7 |
Load_Advances (Fast) | 60000 | 233 | 232 | 0.6 |
Load_Advances (Unscaled) | 60000 | 220 | 220 | 0.0 |
Render | 60000 | 53179 | 53842 | -1.2 |
Get_Glyph | 60000 | 38820 | 39532 | -1.8 |
Get_Char_Index | 47000 | 197 | 198 | -0.3 |
Iterate CMap | 500 | 185 | 194 | -4.6 |
New_Face | 500 | 2308 | 2267 | 1.8 |
Embolden | 60000 | 41109 | 41912 | -2.0 |
Stroke | 60000 | 213674 | 213932 | -0.1 |
Get_BBox | 60000 | 17216 | 16035 | 6.9 |
Get_CBox | 60000 | 38976 | 40102 | -2.9 |
New_Face & load glyph(s) | 60000 | 5564 | 5554 | 0.2 |
TOTAL | 1416000 | 471587 | 472930 | 0.3 |
Results for Arial_subset.ttf
Test | N | * Baseline (µs) | * Benchmark (µs) | Difference (%) |
Load | 47500 | 37834 | 43165 | -14.1 |
Load_Advances (Normal) | 47500 | 37650 | 35215 | 6.5 |
Load_Advances (Fast) | 47500 | 202 | 284 | -40.6 |
Load_Advances (Unscaled) | 47500 | 192 | 198 | -3.1 |
Render | 47500 | 60761 | 63992 | -5.3 |
Get_Glyph | 47500 | 47014 | 46873 | 0.3 |
Get_Char_Index | 47000 | 191 | 188 | 1.6 |
Iterate CMap | 500 | 164 | 162 | 0.6 |
New_Face | 500 | 2712 | 2687 | 0.9 |
Embolden | 47500 | 49745 | 49386 | 0.7 |
Stroke | 47500 | 182028 | 185064 | -1.7 |
Get_BBox | 47500 | 44360 | 44575 | -0.5 |
Get_CBox | 47500 | 46636 | 46844 | -0.4 |
New_Face & load glyph(s) | 47500 | 5809 | 5696 | 1.9 |
TOTAL | 1141000 | 515298 | 524329 | 1.8 |
Results for TimesNewRoman_subset.ttf
Test | N | * Baseline (µs) | * Benchmark (µs) | Difference (%) |
Load | 47500 | 53998 | 59007 | -9.3 |
Load_Advances (Normal) | 47500 | 41270 | 43176 | -4.6 |
Load_Advances (Fast) | 47500 | 205 | 205 | 0.0 |
Load_Advances (Unscaled) | 47500 | 194 | 195 | -0.5 |
Render | 47500 | 70520 | 69072 | 2.1 |
Get_Glyph | 47500 | 54836 | 53826 | 1.8 |
Get_Char_Index | 47000 | 198 | 195 | 1.5 |
Iterate CMap | 500 | 180 | 166 | 8.1 |
New_Face | 500 | 2838 | 2849 | -0.4 |
Embolden | 47500 | 59834 | 59346 | 0.8 |
Stroke | 47500 | 239306 | 239288 | 0.0 |
Get_BBox | 47500 | 51879 | 52767 | -1.7 |
Get_CBox | 47500 | 53574 | 55530 | -3.7 |
New_Face & load glyph(s) | 47500 | 7012 | 7013 | -0.0 |
TOTAL | 1141000 | 635844 | 642634 | 1.1 |
Results for Tahoma_subset.ttf
Test | N | * Baseline (µs) | * Benchmark (µs) | Difference (%) |
Load | 47500 | 27290 | 33068 | -21.2 |
Load_Advances (Normal) | 47500 | 26190 | 28596 | -9.2 |
Load_Advances (Fast) | 47500 | 202 | 205 | -1.5 |
Load_Advances (Unscaled) | 47500 | 193 | 197 | -2.1 |
Render | 47500 | 46174 | 46322 | -0.3 |
Get_Glyph | 47500 | 36092 | 35983 | 0.3 |
Get_Char_Index | 47000 | 230 | 215 | 6.3 |
Iterate CMap | 500 | 178 | 203 | -13.7 |
New_Face | 500 | 2552 | 2762 | -8.2 |
Embolden | 47500 | 38990 | 39810 | -2.1 |
Stroke | 47500 | 161374 | 162131 | -0.5 |
Get_BBox | 47500 | 33285 | 33466 | -0.5 |
Get_CBox | 47500 | 35792 | 36093 | -0.8 |
New_Face & load glyph(s) | 47500 | 5348 | 5316 | 0.6 |
TOTAL | 1141000 | 413890 | 424364 | 2.5 |
Results for Verdana_subset.ttf
Test | N | * Baseline (µs) | * Benchmark (µs) | Difference (%) |
Load | 47500 | 29093 | 24092 | 17.2 |
Load_Advances (Normal) | 47500 | 26602 | 25101 | 5.6 |
Load_Advances (Fast) | 47500 | 205 | 204 | 0.5 |
Load_Advances (Unscaled) | 47500 | 197 | 196 | 0.5 |
Render | 47500 | 47776 | 43416 | 9.1 |
Get_Glyph | 47500 | 36802 | 33101 | 10.1 |
Get_Char_Index | 47000 | 196 | 197 | -0.5 |
Iterate CMap | 500 | 166 | 183 | -10.2 |
New_Face | 500 | 2452 | 2440 | 0.5 |
Embolden | 47500 | 39363 | 35702 | 9.3 |
Stroke | 47500 | 159770 | 155200 | 2.9 |
Get_BBox | 47500 | 34184 | 30266 | 11.5 |
Get_CBox | 47500 | 36878 | 32924 | 10.7 |
New_Face & load glyph(s) | 47500 | 5356 | 5199 | 2.9 |
TOTAL | 1141000 | 419040 | 388223 | -7.4 |
Freetype Benchmark
Freetype Benchmark Results
Warning: Baseline and Benchmark have the same commit ID!
Info
Info | Baseline | Benchmark |
Parameters | -c 550 -w 50 | -c 550 -w 50 |
Commit ID | f3dfede6 | f3dfede6 |
Commit Date | 2023-08-18 17:42:53 +0300 | 2023-08-18 17:42:53 +0300 |
Branch | GSoC-2023-Ahmet | GSoC-2023-Ahmet |
* Average time for all iterations. Smaller values are better.
** N count in (x | y) format is for showing baseline and benchmark N counts seperately when they differs.
Total Results
Test | N | Baseline (µs) | Benchmark (µs) | Difference (%) |
Load | 250000 | 195162 | 192424 | 1.4 |
Load_Advances (Normal) | 250000 | 176304 | 165363 | 6.2 |
Load_Advances (Fast) | 250000 | 1108 | 1206 | -8.8 |
Load_Advances (Unscaled) | 250000 | 1087 | 1002 | 7.8 |
Render | 250000 | 287896 | 281738 | 2.1 |
Get_Glyph | 250000 | 229158 | 209460 | 8.6 |
Get_Char_Index | 235000 | 992 | 974 | 1.8 |
Iterate CMap | 2500 | 869 | 862 | 0.7 |
New_Face | 2500 | 14858 | 12944 | 12.9 |
Embolden | 250000 | 251134 | 225803 | 10.1 |
Stroke | 250000 | 1029943 | 952907 | 7.5 |
Get_BBox | 250000 | 194832 | 175632 | 9.9 |
Get_CBox | 250000 | 240592 | 208729 | 13.2 |
New_Face & load glyph(s) | 250000 | 30726 | 28956 | 5.8 |
TOTAL | 2990000 | 2654662 | 2458002 | 7.4 |
Results for Roboto_subset.ttf
Test | N | * Baseline (µs) | * Benchmark (µs) | Difference (%) |
Load | 60000 | 32608 | 29986 | 8.0 |
Load_Advances (Normal) | 60000 | 25514 | 27810 | -9.0 |
Load_Advances (Fast) | 60000 | 234 | 236 | -0.4 |
Load_Advances (Unscaled) | 60000 | 222 | 222 | -0.2 |
Render | 60000 | 59280 | 53374 | 10.0 |
Get_Glyph | 60000 | 46564 | 38660 | 17.0 |
Get_Char_Index | 47000 | 189 | 192 | -1.9 |
Iterate CMap | 500 | 162 | 199 | -22.5 |
New_Face | 500 | 2365 | 2473 | -4.6 |
Embolden | 60000 | 42693 | 40797 | 4.4 |
Stroke | 60000 | 231927 | 213316 | 8.0 |
Get_BBox | 60000 | 17214 | 15458 | 10.2 |
Get_CBox | 60000 | 59079 | 38800 | 34.3 |
New_Face & load glyph(s) | 60000 | 5881 | 5673 | 3.5 |
TOTAL | 1416000 | 523930 | 467197 | -10.8 |
Results for Arial_subset.ttf
Test | N | * Baseline (µs) | * Benchmark (µs) | Difference (%) |
Load | 47500 | 46718 | 50918 | -9.0 |
Load_Advances (Normal) | 47500 | 48963 | 41102 | 16.1 |
Load_Advances (Fast) | 47500 | 220 | 203 | 7.9 |
Load_Advances (Unscaled) | 47500 | 212 | 194 | 8.5 |
Render | 47500 | 68496 | 63349 | 7.5 |
Get_Glyph | 47500 | 56682 | 47480 | 16.2 |
Get_Char_Index | 47000 | 205 | 191 | 6.8 |
Iterate CMap | 500 | 176 | 166 | 5.7 |
New_Face | 500 | 4460 | 2648 | 40.6 |
Embolden | 47500 | 65332 | 49192 | 24.7 |
Stroke | 47500 | 209668 | 181308 | 13.5 |
Get_BBox | 47500 | 45346 | 43772 | 3.5 |
Get_CBox | 47500 | 48516 | 46081 | 5.0 |
New_Face & load glyph(s) | 47500 | 6254 | 5712 | 8.7 |
TOTAL | 1141000 | 601248 | 532316 | -11.5 |
Results for TimesNewRoman_subset.ttf
Test | N | * Baseline (µs) | * Benchmark (µs) | Difference (%) |
Load | 47500 | 49522 | 53178 | -7.4 |
Load_Advances (Normal) | 47500 | 42683 | 41759 | 2.2 |
Load_Advances (Fast) | 47500 | 204 | 203 | 0.5 |
Load_Advances (Unscaled) | 47500 | 195 | 194 | 0.5 |
Render | 47500 | 69274 | 71641 | -3.4 |
Get_Glyph | 47500 | 55683 | 54139 | 2.8 |
Get_Char_Index | 47000 | 195 | 196 | -0.8 |
Iterate CMap | 500 | 166 | 166 | 0.6 |
New_Face | 500 | 2816 | 2772 | 1.6 |
Embolden | 47500 | 61636 | 60835 | 1.3 |
Stroke | 47500 | 243476 | 240778 | 1.1 |
Get_BBox | 47500 | 54669 | 52533 | 3.9 |
Get_CBox | 47500 | 56070 | 54882 | 2.1 |
New_Face & load glyph(s) | 47500 | 6931 | 6942 | -0.2 |
TOTAL | 1141000 | 643522 | 640218 | -0.5 |
Results for Tahoma_subset.ttf
Test | N | * Baseline (µs) | * Benchmark (µs) | Difference (%) |
Load | 47500 | 38173 | 29830 | 21.9 |
Load_Advances (Normal) | 47500 | 34392 | 27796 | 19.2 |
Load_Advances (Fast) | 47500 | 225 | 225 | 0.0 |
Load_Advances (Unscaled) | 47500 | 214 | 198 | 7.5 |
Render | 47500 | 46312 | 45885 | 0.9 |
Get_Glyph | 47500 | 36125 | 35452 | 1.9 |
Get_Char_Index | 47000 | 205 | 198 | 3.4 |
Iterate CMap | 500 | 196 | 167 | 15.0 |
New_Face | 500 | 2775 | 2561 | 7.7 |
Embolden | 47500 | 44650 | 38542 | 13.7 |
Stroke | 47500 | 185296 | 162308 | 12.4 |
Get_BBox | 47500 | 35112 | 32752 | 6.7 |
Get_CBox | 47500 | 42482 | 35130 | 17.3 |
New_Face & load glyph(s) | 47500 | 6473 | 5382 | 16.8 |
TOTAL | 1141000 | 472629 | 416426 | -11.9 |
Results for Verdana_subset.ttf
Test | N | * Baseline (µs) | * Benchmark (µs) | Difference (%) |
Load | 47500 | 28141 | 28512 | -1.3 |
Load_Advances (Normal) | 47500 | 24752 | 26896 | -8.7 |
Load_Advances (Fast) | 47500 | 224 | 339 | -51.0 |
Load_Advances (Unscaled) | 47500 | 244 | 194 | 20.5 |
Render | 47500 | 44534 | 47489 | -6.6 |
Get_Glyph | 47500 | 34104 | 33730 | 1.1 |
Get_Char_Index | 47000 | 198 | 196 | 1.0 |
Iterate CMap | 500 | 168 | 166 | 1.5 |
New_Face | 500 | 2442 | 2490 | -2.0 |
Embolden | 47500 | 36822 | 36436 | 1.0 |
Stroke | 47500 | 159577 | 155198 | 2.7 |
Get_BBox | 47500 | 42493 | 31116 | 26.8 |
Get_CBox | 47500 | 34445 | 33836 | 1.8 |
New_Face & load glyph(s) | 47500 | 5186 | 5246 | -1.2 |
TOTAL | 1141000 | 413332 | 401844 | -2.8 |
Freetype Benchmark