Improving CLRProfiler 4: Reducing SampleObject memory consumption by 58%

In the previous three posts, we managed to double the speed of file loading time of CLRProfiler through profile-guided optimization in three simple steps. Now let’s take a look at reducing CLRProfiler’s memory consumption, making it more useful to real world applications. I managed to create a 10-Gb profile using a performance test. The test program…

2

Improving CLRProfiler 3: Double the speed of profile loading

In the first step of profile-guided optimization, we reduced tatal CPU sample of ReadNewLog.ReadFile from 6,223 samples to 5,803 samples; the second step reduced it further to 3,982. Would it be nice if we can reduce it to below 3,111 samples, essentially doubling the speed of CLRProfiler’s profile loading? The biggest target now are ReadChar…

1

Improving CLRProfiler 2: 19.7% in TryGetValue

Playing with Visual Studio 2010 profiler data Function Code View finds another easy target for improvement: 19.7% in calling TryGetValue on a Dictionary object: This piece of code is called in ‘c’ command process for logged method call information. There are just millions of method calls in the profile we’re testing with. The code uses…

2

Improving CLRProfiler 1: 8.4% Progress Bar Update

Being a CLR performance dev, it seems that CLR profiler will be a very useful. So now I’m trying to understand it inside out, and may be even make some improvement to it. Here are the steps I’m taking: Download CLR profiler 4.0 source code. Unzip, open solution using Visual Studio 2010, making a few…

0

New Job: CLR performance team

I switched job to CLR performance team last August. Now I’m working on something which has huge customer impact, needs tons of technical depth, and fits my long time passion as an old practicing programmer (I still have 30-year source code listing from my college senior year to proof it). This should be fun. Related blogs:…

3