9 Punkte von kuroneko 2023-09-04 | 2 Kommentare | Auf WhatsApp teilen
  • Da Projekte immer komplexer wurden und auch der Ressourcenbedarf für Performance-Tests stark anstieg, wurde ein neues Testsystem nötig.
  • Gewünscht war ein ideales Testsystem, das bei allen Codeänderungen Tests ausführt, diese innerhalb von 10 Minuten abschließt und die Ergebnisse detailliert analysierbar macht.
  • Die Performance von Figma wurde vor allem von CPU und GPU beeinflusst; unter Abwägung der Vor- und Nachteile verschiedener Ansätze wurde das System im Wesentlichen aus zwei Teilen aufgebaut.
  • Cloud-basiertes System
    • Mithilfe von VMs mit GPU, auf denen Headless Chromium läuft, werden Tests parallel ausgeführt, sodass sie innerhalb von 10 Minuten abgeschlossen werden.
    • Da VMs naturgemäß leicht von externen Faktoren beeinflusst werden, wurde ein Puffer von etwa 20 % eingeplant.
  • Hardware-basiertes System
    • In einem System aus alten Laptops (ältere MacBooks, Windows-Laptops, Chromebooks usw.) werden alle Tests eingeplant und nacheinander ausgeführt.
    • Die Tests dauern zwar lange, erlauben aber eine detaillierte Nachverfolgung subtiler Performance-Veränderungen auf echten Geräten.
  • Nach dem Aufbau der beiden Testsysteme wurden weitere Anstrengungen zur Performance-Verbesserung unternommen, mit positiven Ergebnissen.
  • Verbesserung der Rendering-Performance
    • Es wurden Maßnahmen ergriffen, um die Rendering-Performance in Umgebungen zu verbessern, in denen zwar eine GPU, aber keine moderne CPU vorhanden ist.
    • Detaillierte Untersuchungen per Stresstest zeigten, dass einige Funktionen auf bestimmter Hardware erheblichen Overhead verursachten.
    • Durch eine feinere Aufteilung der Rendering-Zeit und die Implementierung eines neuen Algorithmus, der lokale Arbeit priorisiert, konnte die Performance auf älterer Hardware wirksam verbessert werden.
  • Verbesserung der FigJam-Performance
    • Das Schreiben von Tests war schwierig, aber statt wie bisher auf Basis von Kundenanfragen oder Metriken nachträglich zu korrigieren, konnten Probleme nun anhand der Tests im Voraus behoben werden.
    • Auch Probleme, die wegen subtiler Performance-Unterschiede in CSS nur schwer zu entdecken waren, konnten durch dutzendfach wiederholte Tests gefunden und behoben werden.
    • Besonders hilfreich war, dass sich Änderungen im Code, die zu Performance-Einbrüchen führten, präzise zurückverfolgen ließen.
  • Performance-Verbesserungen sind ein anspruchsvoller Bereich, aber da sich menschliche Annahmen und die Realität oft unterscheiden, sind Tests und Performance-Messungen äußerst wichtig.

2 Kommentare

 
kuroneko 2023-09-04

Es ist gut, dass sie die Performance durch Tests verbessert haben, aber ... trotzdem wirkt Figma immer noch ernsthaft langsam.
Auch in den HN-Kommentaren gibt es ziemlich viele Beschwerden darüber, wie extrem langsam es ist. -_-

Besonders seit der Übernahme durch Adobe habe ich das Gefühl, dass es enorm viel langsamer geworden ist (davor war es eigentlich schneller, als man erwarten würde ...)
Ist das wohl nur Einbildung?

 
kuroneko 2023-09-04

KI-Zusammenfassung des HN-Threads

  • skhameneh: Lobt den ehemaligen CTO von Figma, Evan Wallace, für seine Pionierarbeit mit WebAssembly und dafür, dass er den Entwicklungsprozess auf GitHub geteilt hat.
  • imslavko: Teilt frühere Blogbeiträge von Evan und Jamie, die Figmas Umstellung auf WebAssembly, Performance-Tests und Verbesserungen im Laufe der Zeit detailliert beschreiben.
  • fhub: Erwähnt, dass Evan Wallace Figma 2012 mitgegründet hat und dort 10 Jahre lang als CTO tätig war, bevor er 2021 ausschied.
  • antoineMoPa: Zeigt sich überrascht, dass Figma sowohl kommerziellen Erfolg als auch technische Exzellenz erreicht hat, obwohl oft angenommen wird, dass Unternehmen beim Letzteren Kompromisse eingehen müssen.
  • tobyjsullivan: Erklärt, dass Figma eine Ausnahme ist, da die meisten Startups Funktionen über Qualität stellen, während nur wenige neue Technologien innovativ genug weiterentwickeln, um sie erfolgreich zu kommerzialisieren.
  • tmpz22: Kritisiert die engstirnigen Erwartungen an Software, die auf jüngsten Produkten basieren, und sagt, der aktuelle Standard müsse ein erfolgreicher Continuous-Integration-Durchlauf sein.
  • yellow_lead: Fragt sich angesichts von Figmas Fehlerspanne von 20 %, wie andere mit verrauschten Umgebungen für Performance-Tests umgehen.
  • imslavko: Erläutert detailliert, wie Figma Baselines berechnet, um Abweichungen in seinem sekundären hardwarebasierten Testsystem und in virtuellen Maschinen zu bewältigen.
  • koenbok: Berichtet, dass Framer bei dedizierten Test-Mac-Minis mit einer Abweichung von 15 % konfrontiert war und letztlich festgestellt hat, dass User-Monitoring am zuverlässigsten ist.
  • chrisdbanks: Berichtet über Ladezeitprobleme und langsam ladende Bilder in Europa und stellt infrage, ob Figma außerhalb der USA angemessen testet.