I'd like to tackle an old dilemma: Class instantiation. Which pattern do you use to create a class? Do you always use a new statement? Do we still need to use Singleton or Factory? Should we always use dependency injection? How about static classes, are they truly evil?
I recently wrote 3 blog posts on different Producer/Consumer (Job Queues) implementations. In this article, we will compare performance of all the approaches, including...
How many times did you use a desktop application to end up with a frozen unresponsive window? This article is about what we are to do when our .NET application freezes. We're going to explore tools and debugging techniques to see where the program is stuck and to find the core cause of the issue.
Memory leaks are sneakily bad creatures. It's easy to ignore them for a very long time, while they slowly destroy the application. With memory leaks, your memory consumption grows, creating GC pressure and performance problems. Finally, the program will just crash on an out-of-memory exception.
In this article, we'll see how to implement Job Queues with TPL Dataflow, including implementations of several of the said variations. We will dive into the Dataflow mindset along the way, figuring out this awesome library.
Let's consider a simple programming challenge: Summing all items of a large array. Now it stands to reason that this can be easily optimized by using parallelism...
In the last article we talked about what are Job Queues in C#. We saw several great implementation using BlockingCollection and the thread-pool. In part 2, we'll see a couple of great ones including...
Some of the biggest performance problems in almost any .NET application boil down to string operations. They are both very common and by nature pretty expensive. In fact, looking at an average .NET Dump you’ll find that most of the memory is usually taken by strings (I heard about 70%). As you probably know, strings are immutable. So whenever you concatenate strings, a new string object is allocated, populated with content, and eventually garbage collected.
One of the most powerful tools in programming is the Job Queue. It's a simple concept that stands in the core of many software solutions. It's also a pretty interesting programming challenge, especially in a versatile language like C#.