More DynamicMethod Fun: Easy DBCommand Parameter Creation

I saw this post a couple of days ago, and I really liked the idea. I suggested to Matt that he changes his implementation to emit a DynamicMethod, thinking that it would give a performance increase. Here's a link to my implementation - it's rather lengthy so if you want to see how it works feel free to dive into the code.

Tests show that this is faster than the original approach:

  • At 10,000 iterations, Reflection = 0.3002694 seconds, DynamicMethod = 0.0541085 seconds
  • At 50,000 iterations, Reflection = 1.4428920 seconds, DynamicMethod = 0.2020902 seconds
  • At 250,000 iterations, Reflection = 7.0968963 seconds, DynamicMethod = 0.9447661 seconds

More and more I'm finding using a DynamicMethod to hard-code the code paths one finds using Reflection usually leads to a win in terms of performance. Not so much in terms of code maintainability (trying to read ILGenerator-based code in a .NET language is nasty, and debugging a DynamicMethod is not easy) but once it's rock-solid it's clear sailing from that point on.

* Posted at 07.09.2008 03:26:47 PM CST | Link *

Blog History