Durante uma investigação de problemas de performance em um cliente (aplicação em produção), me deparei com um método muito peculiar.

Sua assinatura é clara,

ser_assinatura

já a sua implementação, nem tanto.

ser_original

Fica claro que este método é problemático, pois faz alocações desnecessárias, não implementa Dispose e possui complexidade.

Essa é a versão refatorada do método, corrigindo os problemas descritos acima.

ser_refactor

No benchmark entre as versões do método observamos que a nova versão é 10x mais rápida,

ser_perf

e a pressão no GC e alocações são menores.

ser_gc

No final, a lição é sempre a mesma, mais importante do que saber fazer é saber o que não fazer.