I've been having to deal lately with conversion of large string arrays to number arrays and I'm wondering what the fastest method out there for this really is.
At first I adopted:
double[] doubles = sarray.Split(',').Select(Double.Parse).ToArray();
...which is really sweet... But today, I decided to switch back to a simple for loop to parse all strings in array to Double and not too surprisingly the benchmark seemed to favour the for loop.. so should I switch back to a basic for loop?
Also, I want to know if there's a better type that can be used to store the splitted strings e.g. HashSet
which may perform better during this conversion?
Array.ConvertAll(sarray.Split(','), Double.Parse);
Unlike LINQ's .ToArray()
, this pre-allocates a correctly-sized array and doesn't do any resizing.
This should be indistinguishable from a hand-rolled loop.
When I used:
double[] doubles = Array.ConvertAll(sarray.split(','), Double.Parse);
I got this error:
The type arguments for method 'System.Array.ConvertAll(TInput[], System.Converter)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
But it worked when I did this:
double[] doubles = Array.ConvertAll(sarray.split(','), new Converter<string, double>(Double.Parse));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With