Skip to content

Remove internal hashing in rasterizer

Jeremy Soller requested to merge alexheretic:master into master

Created by: alexheretic

Along with the quick win hashing optimisation of #115 I noted

I actually expect we can rasterize without any hashing...

A bit sooner than I thought I got a chance to look over the map usage, and indeed we can replace all rasterizer hash maps with vecs using ordered swap_remove calls and we get even better peformance.

Even faster than fnv hashing is not hashing.

This replaces the previous improvement with 11-91% faster benchmark drawing since 0.6.0.

name                                                       control ns/iter  change ns/iter  diff ns/iter   diff %  speedup 
draw_big_biohazard                                         908,156          820,894              -87,262   -9.61%   x 1.11 
draw_iota                                                  37,701           22,998               -14,703  -39.00%   x 1.64 
draw_w                                                     10,195           5,334                 -4,861  -47.68%   x 1.91 
gpu_cache::cache_bench_tests::bench_multi_font_population  12,339,345       8,499,095         -3,840,250  -31.12%   x 1.45

Also made a minor improvement to the kerning code to avoid glyph lookup & use the provided ids directly.

Merge request reports