I only looked at the binary example and it’s some of the worst C# code I’ve ever seen. It’s synchronizing every task in a loop instead of waiting for the tasks to complete like the Java example. It’s returning a result instead of using an array like the Java example. The 2 examples are not equivalent.
I know no C#, but you can contribute a better one if you prefer. Some of the languages have multiple implementations in the games and their performance vary a lot.