Israel Aéce

Microsoft MVP, MCP, MCAD, MCTS, MCPD e MCT

My Links

Blog Stats

Archives

Post Categories

Links

Login

Extensibilidade vs. Melhor Performance

Este post se deve à um email que recebi de um colega me perguntando se utilizar Reflection para instanciar as classes de nosso sistema/projeto não perdemos em performance. Não cheguei a fazer testes precisos sobre isso, mas matérias que eu já li a respeito, dizem que instanciar os objetos via Reflection é mesmo mais lento que invocar diretamente o objeto.

Claro que se tivessemos já conhecimento de todas as variações que poderemos vir a ter, não precisaríamos utilizar Reflection, fazendo simplesmente um Select ... Case pelas nossas opções e assim instanciar a classe concreta correta através de nosso Factory Method.

Já se utilizarmos o Reflection, o nosso Factory Method ficaria mais ou menos como:

     Public Shared Function Create() As IAccount
          Dim path As String = GetConfigDAL()
          Return DirectCast(Assembly.Load(path).CreateInstance(path  & ".Account"), IAccount)
     End Function

E no código que instancia o objeto:

     Dim account As IAccount = MinhaDALFactory.Account.Create()

Queria mesmo colher opiniões, procurando saber de vossa parte qual é o mais interessante, ou seja, optar por uma melhor performance ou extensibilidade?

Nota 1: Os exemplos foram baseados no Microsoft Pet Shop 3.0, que foi desenvolvimento como um case-study da  Microsoft.

Nota 2: A Microsoft, neste case-study, levou em consideração tanto performance quanto extensibilidade (utilizando Reflection), e nem por isso a performance foi degradada.

posted on Monday, June 27, 2005 1:47 PM

Feedback

# re: Extensibilidade vs. Melhor Performance 6/27/2005 1:53 PM Joao Paulo Carreiro

Israel, lá por ter vindo da MS nao ker dizer k seja ideal :p

Mas olhando para o este codigo este até que é um bom uso de Reflection, pois só estás usando para criar o objecto, tudo o resto é feito atravez da Interface.

Mas mesmo assim, pq nao corres uns testes para ver a diferenca no teu caso?

Quanto a pergunta:
"qual é o mais interessante, ou seja, optar por uma melhor performance ou extensibilidade?"

A resposta é do mesmo genero:

- O que é melhor? Um Ferrari ou um Camiao? ( Resposta: Depende do que é que vais fazer com eles).


Um bom artigo recente sobre reflection está em:
http://msdn.microsoft.com/msdnmag/issues/05/07/Reflection/default.aspx

# re: Extensibilidade vs. Melhor Performance 6/28/2005 5:23 AM João Miranda

Primeiro bom desenho, o que significa que pode não ser necessário extensibilidade nem performance.

Depois, é questão de testes.

Title  
Name  
Url
Box Code
Protected by FormShield
Comments