Today the advancement of computer architectures are directed to more efficient parallelization rather than scalar performance increase. This changes the very base principles of software development, since it requires the programmers to split the programs already being made into independent, concurrently runnable blocks on an algorithmic level.
In my thesis I introduce the basics of parallelized software development, the challenges of creating proper implementations, and how we can answer these using .NET Task Parallel Library.
For my assignment I developed a sequential dictionary digesting algorithm. Based on its performance analysis, I created its parallelized version in .NET Task Parallel Library environment using standard TPL tools. By repeating performance analysis process on the code, I revealed other hotspots, and examining them I could improve the program with further optimizations. Finally I compared the results to the original version and I found an approximately 250% increase in performance (measured as faster execution time).