- À medida que o projeto foi ficando cada vez mais complexo, os recursos necessários para testes de desempenho também aumentaram muito, tornando necessário um novo sistema de testes.
- Eles queriam um sistema de testes ideal que executasse testes para todas as alterações de código, concluísse tudo em até 10 minutos e permitisse analisar os resultados em detalhes.
- O desempenho do Figma era afetado principalmente por CPU e GPU e, considerando os prós e contras de diferentes abordagens, a solução foi estruturada em dois grandes sistemas.
- Sistema baseado em nuvem
- Uso de VMs com GPU executando Headless Chromium para rodar testes em paralelo e garantir a conclusão em até 10 minutos.
- Como, por natureza, VMs são facilmente afetadas por fatores externos, foi mantida uma margem de cerca de 20%.
- Sistema baseado em hardware
- Todos os testes são agendados e executados sequencialmente em um sistema composto por notebooks antigos (MacBooks antigos, notebooks Windows, Chromebooks etc.).
- Os testes demoram mais, mas acompanham em detalhe mudanças sutis de desempenho que aparecem em dispositivos reais.
- Depois de montar os dois sistemas de teste, os esforços para melhorar o desempenho trouxeram resultados positivos.
- Melhoria no desempenho de renderização
- Esforço para melhorar o desempenho de renderização em ambientes onde a GPU existe, mas não há uma CPU moderna.
- Uma investigação detalhada por meio de testes de estresse mostrou que alguns recursos estavam gerando grande sobrecarga em determinados hardwares.
- Ao dividir o tempo de renderização em partes detalhadas e implementar um novo algoritmo que prioriza trabalho local, foi possível melhorar efetivamente o desempenho em hardwares antigos.
- Melhoria de desempenho do FigJam
- Escrever os testes foi difícil, mas deixou de ser necessário corrigir problemas apenas após ver dúvidas de clientes ou métricas, permitindo antecipar e corrigir problemas com base nos testes.
- Até problemas difíceis de detectar, como diferenças sutis de desempenho em CSS, puderam ser encontrados e corrigidos ao repetir os testes dezenas de vezes.
- Foi especialmente útil poder rastrear com precisão quais alterações de código causaram queda de desempenho.
- Melhorar desempenho é uma área difícil, mas como muitas vezes o que as pessoas imaginam difere da realidade, testes e medição de desempenho são extremamente importantes.
2 comentários
É bom ver melhorias de desempenho feitas com testes, mas... ainda acho que o Figma continua seriamente lento.
Nos comentários do HN também há bastante reclamação de que está muito lento. -_-
Especialmente depois da aquisição pela Adobe, tenho a impressão de que ficou muito mais lento (antes era mais rápido do que eu esperava...).
Deve ser só impressão minha, né?
Resumo por IA da thread do HN