views:

94

answers:

3

I was just reading http://stackoverflow.com/questions/25458/how-costly-is-reflection-really I do numerous reflection calls for property sets and was wondering if I should be looking at converting all of my PropertyInfo.SetProperty() into MethodInfos calls so that I can run Delegate.CreateDelegate against.

Finally if I do this, I assume that I need to store each MethodInfo or the Property based on the object Type even if the Property name and Type are the same across multiple Types

fyi. I am using dotnet 2

Added ----

I am not dealing with a critical performance problem per se, but there are sometimes enough of a lag that working on this is not a bad idea if it will make a difference. Furthermore, 90%+ of my reflection calls occur with 2 functions so small changes there could have huge impact throughout the app.

A: 

If you don't have a performance problem, then don't solve a performance problem.

John Saunders
Not a critical performance problem per se, but there are sometimes enough of a lag that working on this is not a bad idea. Furthermore, 90%+ of my reflection calls occur with 2 functions so small changes there could have huge impact.
JDMX
+1  A: 

As John said, you're the best person to answer that question. Make a quick test in LINQPad using both methods and see if your usage justifies the optimization. But perhaps a better optimization (if it makes sense in your situation) would be to try to convert your reflection into expression trees.

Josh Einstein
could be useful but I am in dotnet 2 so i cannot use straight away. but with someediting...
JDMX
+1  A: 

It doesn't make any difference. The cost is in retrieving the metadata from the assembly. Whether it is a PropertyInfo or the MethodInfo that reflects the setter or getter is immaterial. Time this with System.Diagnostics.Stopwatch to convince yourself, the proof is in the pudding. Make sure you time the first use, it is fast after that thanks to the metadata getting cached.

Hans Passant
I implements a methodinfo caching list and found out that in fact the times were nearly identical. Guess I have to look elsewhere for the performance boost.
JDMX