Better C# .Sum() in More Ways

Several improvements to C# .Sum() were shown in the “Better C# .Sum() in Many Ways” blog and made available in the HPCsharp nuget package. In this blog, I’ll explore more ways to improve .Sum() to raise its capabilities to the next level in performance while not giving up accuracy. BigInteger Summation C# provides a BigInteger […]

Read more "Better C# .Sum() in More Ways"

Faster Copying in C#

Copying List to Array To convert a List to an Array, C# provides a convenient ToArray function: var listSource = new List<int> { 5, 7, 16, 3 }; int[] arrayDestination1 = listSource.ToArray(); // C# standard conversion int[] arrayDestination2 = listSource.ToArrayPar(); // HPCsharp parallel conversion ToArray comes up often, whenever some method requires an Array, but you happen […]

Read more "Faster Copying in C#"

Faster Checked Addition in C#

Adding Two Integers – Surprise! Adding two integers in C# can produce surprising results. For instance, int sum = 2147483647;    // Int32.MaxValue == 0x7FFFFFFF sum = sum + 1; The resulting sum is expected to be 2147483648, but is -2147483648 instead. uint sum = 4294967295;    // UInt32.MaxValue == 0xFFFFFFFF sum = sum + 1; The […]

Read more "Faster Checked Addition in C#"

Better C# .Sum() in Many Ways

C# Linq provides a convenient way to add up all of the array elements. var arr = new int[] { 5, 7, 16, 3 }; int arrSum = arr.Sum(); This .Sum() supports some of the built-in numeric types: int, long, float, double, and decimal. It provides a nicely consistent and convenient way of adding up […]

Read more "Better C# .Sum() in Many Ways"

Faster LSD Radix Sort

LSD Radix Sort algorithm has been around for a long time with first computer usage in 1950’s and 1960’s to sort punch cards by performing several passes at the stack of cards. It has resurfaced in the last decade with GPUs having hundreds and even thousands of processor with internal local truly random access memories […]

Read more "Faster LSD Radix Sort"