Reflection y llamada dinámica a método

26/03/2007 - 22:17 por Marianoh | Informe spam
Hola

Tengo una clase que llama a métodos a partir de un string con su
nombre utilizando InvokeMember, ahora, como las llamadas se repiten
muchas veces, quiero hacerlas de la manera más performante posible.

Si creo un methodinfo para cada llamada ¿es más rápido?

Agradezco comentarios u otra forma de hacerlo.

Gracias

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
26/03/2007 - 22:52 | Informe spam
Pienso que sí, si creas un objeto MethodInfo y lo reutilizas varias veces
el rendimiento será mejor q si creas el objeto desde cero cada vez.

Slds - Octavio


"Marianoh" escribió en el mensaje
news:
Hola

Tengo una clase que llama a métodos a partir de un string con su
nombre utilizando InvokeMember, ahora, como las llamadas se repiten
muchas veces, quiero hacerlas de la manera más performante posible.

Si creo un methodinfo para cada llamada ¿es más rápido?

Agradezco comentarios u otra forma de hacerlo.

Gracias
Respuesta Responder a este mensaje
#2 Marianoh
26/03/2007 - 23:09 | Informe spam
On 26 mar, 17:52, "Octavio Hernandez"
wrote:
Pienso que sí, si creas un objeto MethodInfo y lo reutilizas varias veces
el rendimiento será mejor q si creas el objeto desde cero cada vez.

Slds - Octavio

"Marianoh" escribió en el mensajenews:
Hola

Tengo una clase que llama a métodos a partir de un string con su
nombre utilizando InvokeMember, ahora, como las llamadas se repiten
muchas veces, quiero hacerlas de la manera más performante posible.

Si creo un methodinfo para cada llamada ¿es más rápido?

Agradezco comentarios u otra forma de hacerlo.

Gracias



Gracias Octavio, voy a hacer unas pruebas y las comento acá. También
se me ocurrió enlazar eventos en tiempo de ejecución, pero tengo que
investigarlo.

saludos
Respuesta Responder a este mensaje
#3 Alfredo Novoa
27/03/2007 - 12:12 | Informe spam
On Mon, 26 Mar 2007 22:52:49 +0200, "Octavio Hernandez"
wrote:

Pienso que sí, si creas un objeto MethodInfo y lo reutilizas varias veces
el rendimiento será mejor q si creas el objeto desde cero cada vez.



Será inapreciablemente más rápido y seguirá siendo muy lento.

Hay formas de hacerlo mucho más rápido como usando delegados o
interfaces.

En Code Project hay muchos artículos sobre eso.

Pongo uno cualquiera como ejemplo (el gráfico es bastante
espectacular):

http://www.codeproject.com/csharp/d...tes.asp?df0&forumid7817&exp=0&select77067


Saludos
Alfredo
Respuesta Responder a este mensaje
#4 Octavio Hernandez
27/03/2007 - 12:33 | Informe spam
Alfredo,

Será inapreciablemente más rápido y seguirá siendo muy lento.



Bueno, no necesariamte inapreciable, depende de la situación, cuántas veces
se creen esos objetos, la cantidad de iteraciones del bucle, etc. no?
En .NET no recuerdo comparativas de ese tipo, pero de mis tiempos con Java
recuerdo que el "Thinking in Java" de Bruce Eckel tiene un apéndice con los
costes relativos de las diferentes construcciones de Java, la construcción
de objetos
sobresale con diferencia...

Hay formas de hacerlo mucho más rápido como usando delegados o
interfaces.



Cierto.

Slds - Octavio
Respuesta Responder a este mensaje
#5 Alfredo Novoa
27/03/2007 - 13:05 | Informe spam
Hola Octavio,

On Tue, 27 Mar 2007 12:33:46 +0200, "Octavio Hernandez"
wrote:

Bueno, no necesariamte inapreciable, depende de la situación, cuántas veces
se creen esos objetos, la cantidad de iteraciones del bucle, etc. no?
En .NET no recuerdo comparativas de ese tipo, pero de mis tiempos con Java
recuerdo que el "Thinking in Java" de Bruce Eckel tiene un apéndice con los
costes relativos de las diferentes construcciones de Java, la construcción
de objetos
sobresale con diferencia...



Ya, pero comparado con el cuello de botella del
MethodInfo.InvokeMember creo que apenas se notaría.

Aunque está claro que siempre es mucho mejor crear el objeto fuera del
bucle.


Saludos
Alfredo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida