Commit 589d9fa
authored
fix: Performance improvement (#707)
- Improve caching: generating images with the same font buffer will
re-use the parsed font file;
- Improve caching: avoid re-computing paths of the same glyph in one
pass (this is highly inspired by @NiteshSingh17's work in #679).
```
clk: ~4.15 GHz
cpu: Apple M4 Pro
runtime: node 22.13.1 (arm64-darwin)
benchmark avg (min … max) p75 / p99 (min … top 1%)
------------------------------------------- -------------------------------
satori 3.88 ms/iter 4.07 ms █
(3.40 ms … 7.24 ms) 6.00 ms █▅ ▆ ▃
( 3.63 mb … 11.83 mb) 6.76 mb ███████▄▄▂▂▂▂▁▁▂▁▂▁▁▂
satori + resvg 31.76 ms/iter 32.07 ms █ █ █
(31.31 ms … 32.50 ms) 32.21 ms █▅▅█▅ ▅ ▅▅ ▅▅ ▅▅█▅
( 6.78 mb … 6.82 mb) 6.79 mb █████▁█▁██▁▁▁██▁▁████
satori + sharp 14.30 ms/iter 14.36 ms █ ▅█
(13.95 ms … 15.21 ms) 15.11 ms ███▆██
( 6.80 mb … 6.92 mb) 6.83 mb █▁████████▄▁▁▄▁▁▄▁▁▁▄
summary
satori
3.69x faster than satori + sharp
8.19x faster than satori + resvg
```
Before this change:
```
satori 4.06 ms/iter 4.29 ms █
(3.47 ms … 7.41 ms) 6.48 ms ▅█▅▆▆ ▃
( 3.57 mb … 11.78 mb) 6.60 mb ███████▄▆▄▂▁▂▁▂▁▂▂▁▁▂
```
It's a ~7% change in P99.1 parent 1a338ca commit 589d9fa
1 file changed
+80
-26
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
90 | 95 | | |
91 | 96 | | |
92 | 97 | | |
| |||
143 | 148 | | |
144 | 149 | | |
145 | 150 | | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | | - | |
152 | | - | |
153 | | - | |
154 | | - | |
155 | | - | |
156 | | - | |
| 151 | + | |
157 | 152 | | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
163 | | - | |
164 | | - | |
165 | | - | |
166 | | - | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
167 | 177 | | |
| 178 | + | |
168 | 179 | | |
169 | | - | |
| 180 | + | |
| 181 | + | |
170 | 182 | | |
171 | 183 | | |
172 | 184 | | |
| |||
494 | 506 | | |
495 | 507 | | |
496 | 508 | | |
497 | | - | |
498 | | - | |
499 | | - | |
500 | | - | |
501 | | - | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
502 | 556 | | |
503 | 557 | | |
504 | 558 | | |
| |||
0 commit comments