Zum Inhalt springen

Bench

Paneflow liefert Performance-Arbeit mit Zahlen statt Adjektiven. Jede Suite unten läuft auf einer committeten Baseline und auf dem neuesten Commit, auf derselben Maschine, über ein Skript aus dem Repository. Die Terminal-Pipeline macht den Anfang, weitere Suiten folgen.

MetrikEingespart
  1. 1Aufwachen im Leerlauf, reine Anzeige-Pane
    98 % 64,0×
  2. 2Veröffentlichung beim Tastenecho, Pane 220×60
    95 % 20,0×
  3. 3Zeilentext lesen, Pane 220×60
    92 % 11,8×
  4. 4Aufwachen im Leerlauf, Shell am Prompt
    86 % 7,11×
  5. 5Publish-Gate bei tröpfelnder Ausgabe
    75 % 4,00×
  6. 6Durchsatz auf dem Korpus
    74 % 3,87×
  7. 7Basisschrift auflösen, pro Frame
    50 % 2,00×
  8. 8Veröffentlichung beim Scrollen, Pane 120×40
    50 % 1,98×
  9. 9Veröffentlichung beim Scrollen, Pane 220×60
    36 % 1,56×
  10. 10Layout-Durchlauf, Pane 220×60
    9,9 % 1,11×
Abbildung 1. Anteil der Baseline-Kosten, den der neueste Lauf je Metrik entfernt, gegen die committete Baseline. Zeiten sind Mediane im Release-Profil, Allokationszahlen sind exakt. AMD Ryzen 7 7800X3D, Windows 11, release profile.

Terminal-Pipeline

Von den PTY-Bytes bis zum Layout, das der Renderer zeichnet: Snapshot und Grid-Konvertierung beim Scrollen und beim Tastenecho, der fensterlose Layout-Durchlauf, die Lookups des Render-Threads in jedem Frame, das Publish-Pacing bei tröpfelnder Ausgabe, der Durchsatz auf dem Korpus und wie oft eine leerlaufende Pane aufwacht. Zeiten sind Mediane im Release-Profil, Allokationszahlen sind exakt.

Alle Metriken

Baseline und neuester Lauf nebeneinander: Hauptwert, p95, wo die Metrik einen hat, und Allokationen pro Iteration.

MetrikBaselineNeuester LaufÄnderungp95Alloc/Iter., BaselineAlloc/Iter., neuester Lauf
Veröffentlichung beim Scrollen, Pane 220×60700,7 µs448,0 µs-36,1 % 1,56×863,6 µs465,7 µs2,70 MiB266 B
Veröffentlichung beim Tastenecho, Pane 220×60166,0 µs8,3 µs-95,0 % 20,0×196,2 µs8,6 µs1,41 MiB106 B
Veröffentlichung beim Scrollen, Pane 120×40324,8 µs163,8 µs-49,6 % 1,98×377,1 µs169,8 µs1,02 MiB242 B
Layout-Durchlauf, Pane 220×60515,8 µs464,9 µs-9,9 % 1,11×632,3 µs481,3 µs164,8 KiB164,8 KiB
Zeilentext lesen, Pane 220×607,1 µs600 ns-91,5 % 11,8×9,1 µs600 ns4,3 KiB1,9 KiB
Basisschrift auflösen, pro Frame200 ns100 ns-50,0 % 2,00×200 ns100 ns152 B0 B
Aktives Theme lesen, pro Frame100 ns100 ns+0,0 % 1,00×100 ns100 ns0 B0 B
Publish-Gate bei tröpfelnder Ausgabe1.000 Frames pro 1.000 Chunks250 Frames pro 1.000 Chunks-75,0 % 4,00×k. A.k. A.k. A.
Durchsatz auf dem Korpus0,2 MiB/s0,9 MiB/s+287,0 % 3,87×k. A.1,52 MiB2,8 KiB
Aufwachen im Leerlauf, reine Anzeige-Pane64 Aufwachen/s1 Aufwachen/s-98,4 % 64,0×k. A.k. A.k. A.
Aufwachen im Leerlauf, Shell am Prompt64 Aufwachen/s9 Aufwachen/s-85,9 % 7,11×k. A.k. A.k. A.

Weitere Suiten folgen, jede mit eigener committeter Baseline und archivierten Läufen, im selben Format.