I’m doing a lot of work processing data streams for GPSs IMUs and other sensor devices. I’m having to resort to pretty inefficent code to get much of this done by turning the data into strings and then using the .net parse routines to get the data. I’m using a GPS that’s capable of sending updates 10hz but even after extensive tuning I can’t get my parsing fast enough to do that, much less leave time for important things like running PID filters to control the plane.
GHIElectronics.NETMF.System.ExtractValueFromArray is great, but I’d like a more extensive library and the .NET Framework has a way to extract a string from a byte array (UTF8 decoder). But I’m getting killed by the GC by creating hundreds (thousands?) of immutable strings per second just to turn those strings into Ints and Doubles. Right now it’s:
UTF8Decoder -> String.Split -> Double.Parse
I would love a beefed-up utility class that can work at the byte level and extract UTF-encoded floats and doubles given a byte array, offset and length.
I could write this in RLP but that’s no available in Panda so I’m asking here.
Also, the Array.IndexOf method is SLOW on byte arrays. I looked at the MF source for it and I see ways to write a byte-array-specific version that would be much faster.
And a Pony… I also want a Pony!