3.18. Determining Where Boxing and Unboxing Occur
Problem
You have a project consisting of some very complex code that is a performance bottleneck for the entire application. You have been assigned to increase performance, but you do not know where to start looking.
Solution
A great way to start looking for performance problems is to set a customer-focused goal for what level of performance you want to achieve. The old saying "if we don't know where we are going, anyplace will do" is very appropriate for performance tuning, as lots of time and money can be spent in pursuit of gains that may or may not be necessary if no goals are set to measure them against. To reach the goal, you can use a profiling tool to see whether boxing is actually causing you any kind of problem in the first place. A profiler will show you exactly what allocations are occurring and in what volume. There are several profilers on the market; some are free and others are not.
If you have already established through profiling that boxing is definitely causing a problem, but you are still having trouble working out where it's occurring, then you can use the Ildasm disassembler tool that is packaged with VS.NET. With Ildasm, you can convert an entire project to its equivalent IL code and then dump the IL to a text file. To do this, Ildasm has several command-line switches, one of which is the /output
switch. This switch is used as follows:
ildasm Proj1.dll /output:Proj1.il
This command will disassemble the file Proj1.dll ...
Get C# 3.0 Cookbook, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.