Performance degradation of font cache in 1.11.3

Deokjin Kim <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <17591249.283301325238795854.JavaMail.weblogic@epml02>
Hello all,

When I measure elapased time of cairo using cairo-perf-trace, elapsed time of 1.10.2(release version) is shorter than that of 1.11.3(latest code). That is, performance of 1.10.2 is better than that of 1.11.3.
I think change of font cache is playing a role in causing this issue.

I found two root cause.
1. Use original_font_face instead of font_face when you create key of scaled font in cairo_scaled_font_create().
  This change degrades hit ratio of _cairo_hash_table_lookup().

 Below is related source code of 1.11.3.
 1028         _cairo_scaled_font_init_key (&key, original_font_face,
 1029                                      font_matrix, ctm, options);  // In 1.10.2, use font_face instead of original_font_face
 1030 
 1031         while ((scaled_font = _cairo_hash_table_lookup (font_map->hash_table,

2. Some change of hash table.
 - hash: Improve double hashing
 - hash: Compare hash values before calling keys_equal
 - hash: Improve handling of dead entries 
  I think purpose of above code change is very good, but actual result is not good.

As I know, 1 is more significant than 2. 
(Actually influence of 2 is slight.)

Please give me advice.
Thank you in advance.

BR,
Deokjin Kim
--
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.