Performance
Alguns pontos
Boxing de tipos
Casting em todos os tipos
Otimizações Statics e JIT
Use coleções genéricas em tipos de referência
Não crie coleções customizadas para tipos de valores

| A coleção Generic tende a ser mais eficiente que as coleções de objetos, por exemplo, um ArrayList, porque não precisa fazer boxing/unboxing.
| Tende ainda ser mais rápida porque eles não precisam fazer o Cast do item solicitado de uma coleção. Lembre-se que esta nova classe pega os tipos adicionados para cada tipo criado na aplicação.
| Campos Static são replicados para cada tipo criado, o qual recebe sua própria cópia estática e os inicializadores são executados para cada tipo.
| Algumas otimizações no JIT não são aplicadas porque os tipos são genéricos.
| Use coleções genéricas sobre os tipos de referência. Quando você emprega um novo tipo de construtor formado por um tipo genérico pré-existente, como um parâmetro de tipo de referência, o custo da performance é pequeno, mas não zero. Dê preferência ao uso de coleções genéricas sobre tipos com valor sobre um novo tipo de coleção customizada, jamais implemente os tipos e métodos genéricos sem entender as implicações de performance.