How to Build Map Containers Faster with PTL for .NET

The last video in our Parallel Template Library (PTL) video series (.NET Sorted Dictionary vs. PTL Map32 – Add, Item & Remove Functions) demonstrated the performance of the insertion method of PTL’s map container for large data sets by comparing it to the equivalent .NET container. In our latest video, “How to Build Map Containers Faster with PTL for .NET,” we show how you can improve the performance even more by using pre-sorted elements when building a map.

The PTL Containers component for .NET and Java offers powerful data containers that have been optimized for parallelism and for large data sets, such as the Map containers that we demonstrate in this video. We compare the Insert and PushBack methods from PTL’s Map64 container to the equivalent Add method from the .NET SortedDictionary on a system with a quad-core processor and 32 GB of memory.

A map is a variable-sized collection of (key, value) pairs. Its primary usage is the efficient retrieval of elements (or values) based on their associated keys. It also implements the insertion and removal of elements very efficiently.

Read More >>

LinkedInGoogle+TwitterFacebookGoogle GmailShare

.NET Sorted Dictionary vs. PTL Map32 – Add, Item & Remove Functions

Our latest Parallel Template Library (PTL) video demonstrates the performance of PTL’s map container, Map32, for large data sets by comparing it to the equivalent .NET SortedDictionary container.

During the demo, we add, retrieve and remove 100 million elements (which consist of a key and a value) from both map containers on a system with a quad-core processor and 32 GB of memory. PTL’s Map32 inserted elements 3.8 times faster, retrieved elements 2.1 times faster and erased elements 2.8 times faster than .NET’s SortedDictionary.

A map is a variable-sized collection of (key, value) pairs. Its primary usage is the efficient retrieval of elements (or values) based on their associated keys. It also implements the insertion and removal of elements very efficiently.

PTL offers Map32 and Map64 classes that are very similar to the .NET SortedDictionary class. PTL maps differ from the .NET SortedDictionary because they have a Boolean property called “Unique” that is set in their constructor and indicates if the map allows or disallows duplicate keys. The .NET SortedDictionary only allows elements with unique keys. It’s also important to note that PTL’s Map32 and Map64 are not tuned for a 32 or 64-bit operating system; they only differ in their maximum size.

Read More >>

LinkedInGoogle+TwitterFacebookGoogle GmailShare

Parallel Sort & Reverse Algorithms of PTL Array vs. .NET List

The next video in our Parallel Template Library (PTL) video series is our “Parallel Sort and Reverse in PTL Algorithms” video. PTL differs from the .NET standard library because its Array and Iterator Algorithms components offer parallel versions of many useful algorithms, which take advantage of multicore processors to greatly improve their performance.

In this video, we demonstrate the performance of PTL’s Sort and Reverse algorithms for large data sets (1 billion elements) using a .NET List and a PTLArray container. On a quad-core processor, PTL’s parallel Sort was 4.5 times faster than the sequential Sort of the .NET List, and PTL’s parallel Reverse was 109 times faster than the sequential Reverse of the .NET List.

We executed our demo application on a system with one Intel Core i7 processor with 4 physical cores (8 logical cores with hyperthreading) and 32 GB of memory. We also restarted the demo application after each test to run each test independently and get a fair comparison.

Read More >>

LinkedInGoogle+TwitterFacebookGoogle GmailShare

Memory Management of .NET List vs. PTL List64 (Video)

We continue our Parallel Template Library (PTL) video series with our “Memory Management in PTL Containers” video. The PTL Containers component for .NET and Java offers powerful data containers that have been optimized for large data sets and for parallelism to take advantage of multicore processors.

In this video, we demonstrate how PTL’s superior container architecture results in better memory management and increased performance. We compare a .NET List to a PTL List64 container. We add from 100 million to 1.1 billion elements to both containers to show how PTL uses memory much more efficiently. We also retrieve all elements from both containers to prove that random access performance was not sacrificed to implement PTL’s superior memory management scheme.

We executed our demo application on a system with one Intel Core i7 processor with 4 physical cores (8 logical cores with hyperthreading) and 32 GB of memory. We also restarted the demo application after each test to run each test independently and get a fair comparison.

Read More >>

LinkedInGoogle+TwitterFacebookGoogle GmailShare

Parallel Template Library (PTL) for .NET and Java Overview (Video)

We’ve been working on a new video series to showcase our Parallel Template Library (PTL), which is a generic and parallel programming library for .NET and Java. Our first video gives an overview of PTL’s strengths and innovations:

Parallel Template Library (PTL) simplifies parallel performance for .NET and Java developers. We developed PTL for software developers who don’t have the time or resources to become parallel programming experts but who still want to take advantage of parallelism and multicore processors to improve the performance of their existing applications. We understand that not everyone will be as passionate about parallel programming as we are, but we strongly believe that it should be used more often to take advantage of modern hardware.

Often, expert software developers focus only on obtaining more performance, and parallel programming solutions are still too complex for the majority of developers. PTL achieves high performance parallelism while still being generic and easy to use.

Read More >>

LinkedInGoogle+TwitterFacebookGoogle GmailShare

How I Escaped Communism for a Better Life

For my first post, I initially wanted to introduce myself by telling you about my programming background. However, I recently read “Escaping the Iron Curtain for Silicon Valley“on CNET about the CEO of Tidemark, Christian Gheorghe. Like Christian, I also escaped from communist Romania in 1989, and this article inspired me to share this important part of my background. Unlike Christian, I already had a wife and two children when I left Romania, so my priorities were different when I came to the U.S.

I grew up in a small town in the Carpathian Mountains of Romania, and I understood from a young age that a good education was necessary to obtain a better life. I worked hard to get a scholarship to a boarding high school in a larger city. During high school, I became very interested in computers and realized that I needed to attend college. My only option was the Military Academy of Engineering in Bucharest because the government paid for all college education expenses if you joined the military. I received a Master’s degree in Information Systems Engineering, and I got a good software job with the military right out of college.

Read More >>

LinkedInGoogle+TwitterFacebookGoogle GmailShare