@aljoscha parsing leaf values (numbers, strings, etc is fine) though, for strings you could just use a char pointer into the object, anyway. I mean, don't parse collections.
I did a little test, taking the c program I mentioned here and making it also allocate enough memory to copy the raw record into (parsing it would take more, because you'd unpack the values, etc), run time (of the whole program) went from 0.510s to 0.823s. Just adding malloc
and memcpy
...