Performance of std.json

Chris Williams via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 2 15:40:44 PDT 2014


On Monday, 2 June 2014 at 20:10:52 UTC, David Soria Parra wrote:
> I think the main question is, given that std.json is close to 
> be unusable for anything serious due to it's poor performance, 
> can we come up with something faster that has the same API. I 
> am not sure what phobos take on backwards compatibility is, but 
> I'd rather keep the API than breaking it for whoever is using 
> std.json.

std.json really only has two methods parseJson and toJson. Any 
implementation is going to have those two methods, so in terms of 
not breaking anything, you're pretty safe there.

Since it doesn't have any methods except those two, it really 
comes down to the underlying data structure. Right now, you have 
to read the source and understand the structure in order to 
operate on it, which is a hassle, but is presumably what people 
are doing. So maintaining the current structure would be the key 
necessity. I think that limits the optimizations which could be 
performed, but doesn't make them impossible.

Adding a stream-based parsing method would probably be the main 
optimization. That adds to the API, but is backwards compatible.

The module has a lot of inner methods and recursion. Reducing the 
number of function calls, using manual stack management instead 
of recursion, etc. might give another significant gain. How 
parseJson() works is irrelevant to the caller, so all of that can 
be optimized to the heart's content.


More information about the Digitalmars-d mailing list