On Tue, Feb 10, 2009 at 10:30 AM, Ian Boston <[email protected]> wrote: > IMHO you cant argue with 10x, and I remember that there were tests to prove > this at one point so a big +1 to using JsonSerializer for output. I also > suspect since its smaller that the GC traffic will be lower as well ?
There's a much bigger advantage for GC than for CPU -- we create one buffer up front and append into it, whereas both the json.org and net.sf variants create a ton of tiny buffers. net.sf is slightly better, but not by much. 80% of all garbage generated during a gadget rendering request was being produced by json serialization previously, now it's not even in the top 10. > > > I didn't benchmark org.json for parsing since it needed a lot of coercion > to make it work, but although the json lib was fast it had a reasonably > high GC throughput, that might be an issue. Every little counts. We could also write our own parser. It's not a terribly complex format. > > > Ian > > > On 10 Feb 2009, at 18:08, Kevin Brown wrote: > > For serialization, JsonSerializer (in common) is at least 10x faster than >> org.json and at least 5x faster than json lib, as seen by the perf >> benchmark >> that I checked in. JsonSerializer does not (currently) serialize beans, >> but >> that's an easy addition. >> >> Parsing is another story though, and that's where we should focus. Pick >> one >> of the two libraries and hide it behind a wrapper and we should be good. >> >> On Tue, Feb 10, 2009 at 1:23 AM, Ian Boston <[email protected]> wrote: >> >> I agree we should be down to one, but I am not entirely certain about the >>> speed as json-lib was developed from the original json org with the >>> intention of improving speed and flexibility. Evidence is everything, so >>> before putting the json-lib code in I did some comparative tests that I >>> posted to the list,(about july 2008), and I think that json-lib was >>> faster. >>> However... we could be talking about different json org libs, the tests >>> might not have been valid comparisons. >>> >>> If its well known that json org is faster then +1 to removing it as a >>> serializer on that basis. >>> If someone has done some other tests, then yes +1 to removing it, >>> If we are not certain some small tests would prove the case. >>> >>> >>> Here are some of the threads in the past >>> One of the original motivators >>> http://markmail.org/message/iao6dqngsadgwo3t#query:json%20org%20json >>> %20lib%20shindig+page:1+mid:7a7vroszjvgblyix+state:results >>> >>> The JIRA that added it >>> http://markmail.org/message/iao6dqngsadgwo3t#query:json%20org%20json >>> %20lib%20shindig+page:1+mid:rx65qu4aukzgckrv+state:results >>> >>> The results from the test done at that time: >>> INFO SF JSON Lib Output 0.1697 ms/conversion, 35.587204 heap >>> bytes/conversion, >>> output packet consumed on average 233.6064 for a string length of 97 >>> [2008-07-18 17:36:50,835] (JsonConverterPerformanceTest.java:142) >>> INFO Output Was >>> >>> >>> [{"newfield":"nonsense","name":{"unstructured":"robot"},"isOwner":false,"id":"0","isViewer":false}] >>> [2008-07-18 17:36:50,838] (JsonConverterPerformanceTest.java:148) >>> INFO SF JSON Lib Input 0.1298 ms/conversion, 217.01837 heap >>> bytes/conversion, >>> person object consumed on average 320.088 [2008-07-18 17:36:53,966] >>> (JsonConverterPerformanceTest.java:179) >>> INFO ORG JSON Lib Output 0.59 ms/conversion, 34.423996 heap >>> bytes/conversion, >>> output packet consumed on average 233.1744 for a string length of 97 >>> [2008-07-18 17:37:00,147] (JsonConverterPerformanceTest.java:213) >>> >>> >>> I think the conclusion that I came to then was that >>> lib was about 3 times faster for output than the org version. Going from >>> bean to string. There was no json org string -> bean at the time so I >>> didnt >>> do that test. >>> >>> This was an unpatched version of json org, and there might be a later >>> version now, Paul Linder talks about an OOM error for json org and a >>> patch >>> to fix is. >>> >>> Ian >>> >>> >>> >>> >>> >>> On 10 Feb 2009, at 01:18, Louis Ryan wrote: >>> >>> We currently have two JSON bindings in the Java Shindig codebase. The >>> >>>> JSON-lib one isnt used (?) and adds a significant amount of code. I >>>> believe >>>> that it is faster than the JSON.org implementation but I dont know if we >>>> have a critical performance need here yet. Id be in favor of removing >>>> it, >>>> we >>>> can always add back later. Thoughts? >>>> >>>> >>> >>> >

