mORMot and Open Source friends
File History
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

History of SQLite3/Samples/25 - JSON performance/JSONPerfTestCases.pas

2016-06-08
06:45
[7066c1d675] part of check-in [26bb0f7e53] {2721} another set of patches by Alf for FPC/Lazarus compatibility - mainly about samples compilation under Lazarus - still some debugging to be done for full dynamic arrays SOA support (user: ab branch: trunk)
2015-02-21
11:48
[3ec3f6ae08] part of check-in [50582aecb0] {948} trying to use latest JsonDataObjects's TJsonObject.ToUTF8Json new method which appears to be slower than StringToUTF8(doc.ToJSON) - but now serialization has been optimized from 7 seconds to 5 seconds (our SAX version performs in 1 second) (user: ab branch: trunk)
2015-02-16
12:52
[23e1ca4ba6] part of check-in [d36e8f304a] {909} added overloaded TSQLTable.FieldIndex() and TSQLTable.FieldIndexExisting() methods, to set several local field index integer variables at once (user: ab branch: trunk)
12:22
[8132d5f8cc] part of check-in [0f838524c0] {908} new "Synopse Table" alternative access benchmark, to show SAX advantages (user: ab branch: trunk)
11:16
[1627320ffd] part of check-in [efcb1f0b85] {906} introducing JsonDataObjects library in our JSON performance benchmark (user: ab branch: trunk)
2015-02-15
13:15
[f85e0f7755] part of check-in [9b60596cae] {902} ExeVerionRetrieve() replaced by the more explicit SetExecutableVersion() function - this commit also includes several fixes for the Linux platform (user: ab branch: trunk)
2015-02-01
13:06
[7950af1d30] part of check-in [e758ebb6c0] {797} included QDAC3 in "25 - JSON performance" sample (user: ab branch: trunk)
2014-11-23
16:55
[7d4ce3863a] part of check-in [881797779c] {559} BREAKING CHANGE: new SynLog.pas and SynTests.pas units, extracted from SynCommons (user: ab branch: trunk)
2014-08-23
14:49
[1dab21c082] part of check-in [85b9c26c5e] TServiceMethod.InternalExecute() now allows incoming parameters to be encoded as a JSON object, alternatively to a JSON array - see feature request [48e30e0e05] - will also be used probably to implement our MVC model - see [bd94c11ab167] - updated documentation, about this enhancement of transmission content, and about using a CDN service for hosting and scaling (user: User branch: trunk)
2014-08-22
20:02
[11dc793078] part of check-in [a3fe48576f] implemented fast JSON beautifier and re-formatter via new JSONReformat() JSONBufferReformat() and TTextWriter.AddJSONReformat() for direct conversion of any JSON content into more readable, compact or extended layout (user: User branch: trunk)
2014-05-29
08:13
[5e8a51ff0a] part of check-in [5b061f8fec] added TTestTableContent.SynopseCrossORM in JSON benchmark sample, testing TJSONTableObject performance: this ORM-dedicated class will be used as primary cross-platform mORMot client for RESTful servers (user: User branch: trunk)
2014-05-28
13:04
[1f3df689c7] part of check-in [86cacef934] added TJSONTable.StepValue() method, for ORM result acccess via late-binding (user: User branch: trunk)
2014-05-27
07:01
[e218b7397a] part of check-in [96e7e2a1c5] disabled Delphi 2010 DBXJSON - it is just buggy as hell and not workable with our JSON content! (user: ab branch: trunk)
2014-05-20
10:19
[2366ed63ba] part of check-in [118bc0edc8] added TJSONTable class, which will be used for fast access to mORMot ORM results on client side for [09ae8513eb] also deep code refactoring of the JSON parsing in SynCrossPlatformJSON, via a dedicated TJSONParser structure, and several other optimizations (user: User branch: trunk)
2014-05-19
19:56
[fde4183da2] part of check-in [3c184a8ba5] adding performance and regression tests for SynCrossPlatformJSON - see feature request [09ae8513eb] (user: User branch: trunk)
13:18
[6a8edebc0d] part of check-in [c650509bf2] in JSON performance sample, TTestHugeContent.SynopseReadRecord will now handle GeoJSON types as an enumeration: used memory comes from 123 MB to 113 MB (and due to previous commit optimizing array allocation strategy, speed comes from 1.52 seconds down to 1.32 seconds) (user: User branch: trunk)
13:13
[e81e7062e6] part of check-in [f125671ed7] fixed several compilation warnings with Delphi XE6 (user: User branch: trunk)
2014-05-17
07:42
[09562b3880] part of check-in [d8d48044bc] completed TTestTableContent.DBXJSON test to read all field values of the table (like other tests) - DBXJSON does not perfom too bad, in fact; but its syntax is difficult to work with properties (user: User branch: trunk)
2014-05-16
21:32
[128f6279f7] part of check-in [2e384cc0a8] added a new TTestTableContent.SuperObjectRecord method SuperObject has some issues for property names lookup... accessing the values via a record (and RTTI) is much faster than using S[...] I[...] and such methods (user: User branch: trunk)
20:09
Added [3d001f8743] part of check-in [f23534b4a2] added new "25 - JSON performance" sample for benchmarking of JSON process: mORMot (including TDocVariant, late binding, TSQLTable, ORM, record access, BSON) vs SuperObject/dwsJSON/DBXJSON
  • parse/access/write iteration over a small JSON document,
  • read of deeply nested 680 KB JSON (here mORMot is slower than SO/dwsJSON),
  • read of one 180 MB JSON file (with on-the-fly adaptation to fit a record layout),
  • named access to all rows and columns of a 1 MB JSON table, extracted from a SQL request (with comparison with our ORM performance)

On average and in details, mORMot is the fastest in almost all scenarios (with an amazing performance for table/ORM processing), dwsJSON performs better than SuperObject, and DBXJSON is the slowest (by far, but XE6 version is faster than XE4) (user: User branch: trunk)