A few months ago, I found myself needing to “speed up” a Microsoft .Net Application that I was working on.
For Server based Applications, one of the dominant path to optimizing Applications has been to spawn off new tiny applications or threads.
With new tiny applications the Programmer must take care to build\Utilize Inter-Process communication path. This communication path commonly known as IPC assists in communicating start, middle, end status. And, also small bits of data.
Threads have less overhead, as they are not new, separate Applications with their own distinct and unique address space.
Because they are essentially the same App, the Programmer must take care to protect the address space and access to resources.
The protection is ensured by using aids such as locks and mutexes and semaphores.
The resulting Applications are quite hard to debug. Until properly coded, the App may suffer from data over-writing, deadlock, and thread starvation.
The advent of Multi-Cores and Multi-Processors is forcing developers to try more and harder to reap the rewards of the new architecture (processors).
Microsoft, for one, is making it ever easier to develop such applications.
A good help that made it easier for me is “Paul Jackson’s” Blog posting:
Parallel Programing in .Net 4.0 and VS2010: Part II – WinForms, Tasks,
and Service Level Agreements
Paul’s Blog did a very job introducing me to the “Parallel Task Library”.
There are a couple of areas that I will touch on once I make time to update\revise this posting.
But, wanted to post this. If not for anything else, to be able to get rid of the printer papers that I have carried around until I could properly place them in labelled folders.
1) Optimize Managed Code for MultiCore Machines (Daan Leijen & Judd Hall)