Performance Tips: String.Split

String.Split methods are provided in .Net as a convenient way of dividing string into parts. Here are two basic forms of String.Split methods: public string[] Split(char[] separator, int count, StringSplitOptions options); public string[] Split(string[] separator, int count, StringSplitOptions options); Also String.Split methods are quite easy to use, there are hidde performance issues you should be…

0

TextWriter.WriteLine(string, object[]) in less memory, less time

I found myself increasingly generating reports in .csv format, and then use Excel to analyze the reports. With large amount of data written to the .csv file, file generation time becomes more and more noticable. So I took some time to check what is taking so much time and how can it be reduced. For…

1

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