9 pontos por kuroneko 2023-09-04 | 2 comentários | Compartilhar no WhatsApp
  • À 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

 
kuroneko 2023-09-04

É 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é?

 
kuroneko 2023-09-04

Resumo por IA da thread do HN

  • skhameneh: Elogia Evan Wallace, ex-CTO da Figma, por seu trabalho pioneiro com WebAssembly e por compartilhar sua jornada de exploração no GitHub.
  • imslavko: Compartilha posts anteriores de blog de Evan e Jamie, detalhando a transição da Figma para WebAssembly, os testes de desempenho e as melhorias ao longo do tempo.
  • fhub: Menciona que Evan Wallace foi cofundador da Figma em 2012 e atuou como CTO por 10 anos antes de sair em 2021.
  • antoineMoPa: Expressa surpresa com o fato de a Figma ter alcançado tanto sucesso comercial quanto excelência técnica, supondo que empresas precisem abrir mão da segunda para obter a primeira.
  • tobyjsullivan: Explica que a Figma é uma exceção, já que a maioria das startups prioriza funcionalidades em vez de qualidade, enquanto algumas conseguem inovar em novas tecnologias a ponto de comercializá-las.
  • tmpz22: Critica as expectativas limitadas sobre software com base em produtos recentes, dizendo que o padrão atual deveria ser passar em integração contínua.
  • yellow_lead: Questiona como outras pessoas lidam com ambientes de teste de desempenho ruidosos, considerando a margem de erro de 20% da Figma.
  • imslavko: Explica em detalhes o sistema de testes com hardware auxiliar da Figma e como calculam linhas de base para lidar com a variabilidade de máquinas virtuais.
  • koenbok: Compartilha que a Framer enfrentou uma variação de 15% mesmo com um Mac Mini dedicado para testes e acabou concluindo que o monitoramento de usuários reais é o mais confiável.
  • chrisdbanks: Relata problemas de tempo de carregamento e imagens demorando a aparecer na Europa, questionando se a Figma testa adequadamente fora dos EUA.