googlefonts / googlefonts/oxidize

Gain a better sense of the sub-operations involved in font compilation and their timing

Open
#34 15 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
351
Forks
13
PR merge metrics
No merged PRs in 30d

Description

Issue #25 gave us an overall picture of the distribution of compilation times, but in order to identify the most profitable spots for optimisation, we need a profile of font compilation based on the distinct operations involved:

* How much of the build is taken up with Glyphs-to-UFO conversion?
* How long does cubic-to-quadratic curve conversion take?
* What percentage of build time is the binary font merge?
* What percentage of *that* is gvar generation and optimization?
* ...
* And how do all of these timings vary by glyph count and master count?

We've had attempts in the past to profile fontmake, but this has generally happened on the function level rather than on the macro "operation" level. ("Just throw a profiler at it".) This is relatively difficult to interpret as information gets lost in the weeds. I want a high level report which looks more like this:

```
Glyphs to UFO conversion: 30s (6%)
...
```

There is some timing code in fontmake (but not in ufo2ft), so it's a matter of expanding that, adding semantic information ("What is operation is this code performing?"), and then running it on our Noto test rig and collating the data.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.