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 eg 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));
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.