The thing about performance, even if it's only an illusion, is that it is a celebration of the fact that we do contain within ourselves infinite possibilities.” By Sydney Smith

Software performance has been one of the challenging topics that I am continually expressing interest in; that is why I was very excited joining the CLR Performance Team at Microsoft Corporation.

So what is so interesting about software performance? I find it challenging because of the different breadth and depth levels you have to touch in order to understand and define the performance characteristics of a system. Needless to say that what is even more challenging in performance is the ultimate feeling of success when you see your own application loading / running faster, consuming less memory, and more responsive

Perhaps it is a human nature to explore and push the limits of the system, like designing supersonic airplanes or “disappear before blink” carsJ. I think designing high performance applications is the beast that lies within each software developer of us.

This blog will be an effort to free that beast out, it will be a modest effort to touch on performance engineering topics and how to explore, test and enhance the performance of .NET applications.

The success of this blog will be really based on the readers’ feedback, I will try to capture the feedback and touch on their interesting topics. I would be more than happy to provide assistance and recommendations for any customer scenario. Just feel free to ping me and use my processing cycles

Today’s blog will be addressing the general performance metrics that most of us should think about before evaluating the performance of the system.

So let me ask you the following question, what are the performance metrics you are tracking and measuring in your application?

The answer to this question is not as easy as it seems, the answer will always be: it depends on your application and what it is intended to do.

For example if your application is a server side component you would be more interested to track different metrics than for a client side WinForms application.

But software components share certain performance characteristics like:

1- Startup time performance: The time your application takes to completely load into memory and starts executing the Main Method.

2- Working set: Defined as the amount of memory your application consumes. This memory is code / data. Data could be static or dynamic.

3- Throughput: number of iterations / operations per time unit, the more the better.

Basically performance investigation will fall on one of these three factors.

During the next posts, we will discuss each one of these factors, how to optimize them and more importantly, how to troubleshoot and investigate performance problems in these areas.

Well, enough for now (considering this is the first post ) and will see ya really soon with more posts.