How does it stack up against http://oboejs.com/why ?

 

From: [email protected] [mailto:[email protected]] On Behalf Of 
Bruno Jouhier
Sent: Monday, June 02, 2014 2:36 AM
To: [email protected]
Subject: Re: [nodejs] Re: [ANN] i-json a fast (C++) incremental JSON parser

 

Hi Nuno,

The difference is speed. Just run the test/bench program:

JSON.parse: 584 ms
I-JSON single chunk: 956 ms
I-JSON multiple chunks: 1235 ms
jsonparse single chunk: 8238 ms
DIFFERENT RESULTS!
62: a1=        "latitude": -77.373901,
62: a2=        "latitude": -77.37390099999999,
clarinet single chunk: 5244 ms
clarinet does not materialize result, time is for parsing only


Our application manipulates a lot of JSON data. I want to eliminate big 
JSON.parse calls that block the event loop and go with a streaming API but and 
I'm not ready to pay a high price for it.

Bruno

On Monday, June 2, 2014 4:05:58 AM UTC+2, Nuno Job wrote:

why is it different from clarinet or jsonparse[1]?

 

for what class of application is the difference meaningful?

 

would be happy to refer to this in the clarinet readme,

 

nuno

 

On Sun, Jun 1, 2014 at 12:27 PM, Bruno Jouhier <[email protected] <javascript:> 
> wrote:

Hi Alex,

No, I haven't tried C nor Go. The node and v8 API are exposed in C++. 
Developing with other languages is trickier 
(http://stackoverflow.com/questions/12088937/is-it-possible-to-write-node-js-addons-in-go).
 Why C or Go? 

If your concern is speed, I think that the next step is not to change language 
but to hook directly into v8's internals instead of going through v8's public 
APIs. This is how JSON.parse is implemented. I measured the total time spent in 
the public v8 materialization calls (creating strings, objects and arrays) and 
this time alone is equivalent to the total time used by JSON.parse.

Bruno



On Sunday, June 1, 2014 5:36:01 AM UTC+2, Alex Yaroshevich wrote:

Hi Bruno!

 

Did you tried to write it on C or Go?

On Saturday, May 31, 2014 3:12:13 AM UTC+4, Bruno Jouhier wrote:

I just released a first version of i-json, a fast incremental JSON parser: 
https://github.com/bjouhier/i-json

Main features:

*       It is FAST :-), but still slower than JSON.parse :-(. On my bench 
(parsing a realistic 8 MB JSON file), it comes out as only 60% slower than 
JSON.parse. In comparison, the pure JS parsers that I have tried are more than 
6 times slower than JSON.parse.
*       It is incremental and it works directly on buffers (on strings too :-). 
So you can call it directly with buffers that you receive through 'data' events.
*       It can work either as a DOM parser or an evented one (less events than 
SAX but probably enough).
*       API is small. The intent is not to provide a sophisticated API but a 
fast engine around which you can build fancier APIs.
*       It it implemented in C++ but there is a JS fallback implementation in 
case it does not build. the JS implementation is 2.5 to 3 times slower. I wrote 
it in JS initially but was not happy with the speed. Both implementations pass 
the unit test suite.

Bruno

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected] <javascript:> .
To post to this group, send email to [email protected] <javascript:> .

To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/434777fb-9bcf-4cc8-bd37-caffb76b74b0%40googlegroups.com
 
<https://groups.google.com/d/msgid/nodejs/434777fb-9bcf-4cc8-bd37-caffb76b74b0%40googlegroups.com?utm_medium=email&utm_source=footer>
 .


For more options, visit https://groups.google.com/d/optout.

 

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/824406b1-0e7e-4334-9a85-b73940261570%40googlegroups.com
 
<https://groups.google.com/d/msgid/nodejs/824406b1-0e7e-4334-9a85-b73940261570%40googlegroups.com?utm_medium=email&utm_source=footer>
 .
For more options, visit https://groups.google.com/d/optout.

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/538cc73e.0743ec0a.39fa.ffffe4d0%40mx.google.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to