Start Debugging

Tag: performance

79 posts · Página1de8

Lazy<T> vs LazyInitializer.EnsureInitialized vs double-checked locking em C#
Use Lazy<T> por padrão: ele executa a factory uma única vez, armazena exceções em cache e suas leituras são baratas demais para medir após a inicialização. Use LazyInitializer.EnsureInitialized quando você preenche de forma preguiçosa muitos campos ou posições de um array e não pode pagar um objeto extra por valor. Double-checked locking escrito à mão quase nunca compensa no .NET 10.
O que é o layout transparente de struct, e por que um struct wrapper de campo único muda a convenção de chamada no .NET?
Um struct transparente é aquele que a ABI trata exatamente como seu único campo. O .NET 11 não oferece essa garantia: um struct que encapsula um double é passado em RCX no Windows x64, mas em XMM0 no Linux e no macOS. Veja o disassembly do JIT do .NET 11 em três ABIs, os bugs de P/Invoke que isso causa e como escrever tipos wrapper seguros em qualquer fronteira.
2026-09-27 dartfluttervs-code
Como acelerar um Dart analysis server lento no VS Code em um monorepo Flutter grande
Um monorepo com dezenas de arquivos pubspec.yaml faz o Dart analysis server criar um contexto de análise por pacote, e é para lá que vão a memória e o startup de um minuto. Converta para um pub workspace, exclua o código gerado no analysis_options.yaml, remova os plugins legados do analyzer e use a página Insights para comprovar. Medido no Dart 3.12.2: 2,3x menos memória de pico e metade do tempo de análise a frio.
Próximo