RealTimeChris / Json-Performance

A few C++ json-library benchmarks, of the fastest few libraries.
MIT License
20 stars 2 forks source link

Request for Help #14

Closed Loki-Astari closed 2 months ago

Loki-Astari commented 3 months ago

I posted on Reddit a couple of days ago about a comparison of C++ JSON libraries.

There were several comments that I missed your library. Any chance you want to help and add your library?

I have simplified the project in a branch to make it easy for you to add the appropriate code:

> git clone git@github.com:Loki-Astari/JsonBenchmark.git
> cd JsonBenchmark
> git checkout JsonPerformance
> ./configure
> make
> ./runOneTest all
RealTimeChris commented 3 months ago

Sure. Thanks I will get on that.

Loki-Astari commented 3 months ago

Three files that probably need modifying:

init/Json-Performance
src/ThirdParty/Makefile
src/ThirdParty/JsonPerformanceTest.cpp
RealTimeChris commented 3 months ago

image

Loki-Astari commented 3 months ago

This just means you don't have SSH keys on github.
You can use the https version:

> git clone https://github.com/Loki-Astari/JsonBenchmark.git

I have setup git to use SSH because I find it more convenient than remembering a password.

Loki-Astari commented 3 months ago

Opps. There was a fix in the main branch that was not in your branch. That i have applied. If you try again it should work.

RealTimeChris commented 3 months ago

image

Loki-Astari commented 3 months ago

Sorry I seem to have messed up. Let me have a quick look.

Loki-Astari commented 3 months ago

OK. I have written a script so I don't have any typos in doing this.

So new branch name:

> git https://github.com/Loki-Astari/JsonBenchmark.git
> cd JsonBenchmark
> # Notice new branch name
> git checkout AddJsonPerformance
> ./configure
> make
> ./runOneTest all
RealTimeChris commented 3 months ago

image

Loki-Astari commented 3 months ago

That's not a real error.

In the file src/benchmark/Makefile change this line:

FILE_WARNING_FLAGS     += -Wno-unknown-pragmas

into

FILE_WARNING_FLAGS     += -Wno-unknown-pragmas  -Wno-dangling-reference
RealTimeChris commented 3 months ago

Btw shouldn't https://github.com/realtimechris/jsonifier be the submodule instead of https://github.com/realtimechris/json-performance?

Loki-Astari commented 3 months ago

Sorry. I was doing a lot of things yesterday. Feel free to fix and change as you see fit.

RealTimeChris commented 2 months ago

Alright so I've gotten it to build. Now my question is - for these tests:

virtual bool Parse(const char* j, size_t length, std::unique_ptr<ParseResultBase>& reply) const override
{
    // Parse the json string in "j" with length "length"

    // Your intermediate result is stored in "reply".
    // If you fail to parse (or there is an error in the json) then don't set reply (just leave it null).

    // Note every JSON parser is different so you should define your own reply structure.
    // See the "UnivalueResult" above, configure this to hold your intermediate data.

    // The value returned in "reply" will be passed as the first value to Stringify() and Prettify() (if it is not null).
    return true;
}

virtual bool Stringify(const ParseResultBase& parseResult, std::unique_ptr<StringResultBase>& reply) const override
{
    // Convert the structure you create in "Parse" into a JSON string.
    // Put the string "reply"
    // Note: See test.h for two common implementations of StringResultBase: => (StringResultUsingString / StringResultUsingStream)
    //       You can use these types or you can define your own.
    return true;
}

virtual bool Prettify(const ParseResultBase& parseResult, std::unique_ptr<StringResultBase>& reply) const override
{
    // Convert the structure you create in "Parse" into a JSON string.
    //      The expectation is that this is "Human readable Nice version"
    // Put the string "reply"
    // Note: See test.h for two common implementations of StringResultBase: => (StringResultUsingString / StringResultUsingStream)
    //       You can use these types or you can define your own.
    return true;
}

How can it know what types it is parsing? Because it needs to have this information.

Loki-Astari commented 2 months ago

Most json parsers use an intermediate representation where they don't need to know the type. :-)

But if yours dose (and mine "ThorsSerializer" also needs) to know the incoming type we need to use a slightly different set up. Let me just put something together.

Loki-Astari commented 2 months ago

Just pushed a set of new files to the branch AddJsonPerformance branch. If you pick those up I hope the comments are clear.

If you need examples: Have a look at:

src/ThirdParty/ThorsSeriizerTest.cpp
src/ThirdParty/GlazeTest.cpp
RealTimeChris commented 2 months ago

Alright so when I try to run it with the following branch: https://github.com/RealTimeChris/JsonBenchmark/tree/AddJsonPerformance It throws this error: image

Loki-Astari commented 2 months ago

Well that's a fun error. Let me try and re-create.

What platform are you building on?

RealTimeChris commented 2 months ago

Ubuntu 24.04.

Loki-Astari commented 2 months ago

You don't seem to have committed anything to that branch.

Loki-Astari commented 2 months ago

Thanks god you were not using windows. My Windows VM is so slow.

RealTimeChris commented 2 months ago

You don't seem to have committed anything to that branch.

It should be updated now.

Loki-Astari commented 2 months ago

Hmm. I can seem to reproduce the issue.

I built your master branch. Let me try again with the AddJsonPerformance branch.

RealTimeChris commented 2 months ago

Yes that makes sense as I have not committed anything to the master branch.

Hmm. I can seem to reproduce the issue.

I built your master branch. Let me try again with the AddJsonPerformance branch.

Loki-Astari commented 2 months ago

OK. I have a similar issue now. But I don't get the output you see. But it is failing to run.

Loki-Astari commented 2 months ago

OK. Mine works as expected.

The change I made was to the script runOneTest where I changed the name of the parser to Jsonifier

Loki-Astari commented 2 months ago
loki@linuxcave:~/JsonBenchmark$ ./runOneTest
    Parser: Jsonifier  Passed: /home/loki/JsonBenchmark/data/jsonchecker_pass/pass03.json
    Parser: Jsonifier  Passed: /home/loki/JsonBenchmark/data/jsonchecker_pass/pass02.json
    Parser: Jsonifier  Passed: /home/loki/JsonBenchmark/data/jsonchecker_pass/pass01.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail26.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail13.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail11.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail03.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail15.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail17.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail08.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail19.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail02.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail33.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail27.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail10.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail09.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail29.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail14.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail16.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail21.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail20.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail22.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail31.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail25.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail07.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail28.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail30.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail05.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail32.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail23.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail06.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail24.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail12.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/jsonchecker_fail/fail04.json
        Parse          citm_catalog.json    ... 8.3e-05 ms  1.98e+07 MB/s
        Stringify      citm_catalog.json    ...      0 ms  inf MB/s
        Prettify       citm_catalog.json    ... 4.1e-05 ms  4.02e+07 MB/s
        SaxRoundtrip   citm_catalog.json    ... 8.3e-05 ms  1.98e+07 MB/s
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip13.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip04.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip23.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip08.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip24.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip02.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip05.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip16.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip01.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip15.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip21.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip11.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip17.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip20.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip06.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip18.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip03.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip19.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip26.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip27.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip12.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip10.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip22.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip14.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip25.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip07.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/roundtrip/roundtrip09.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test60.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test29.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test59.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test9.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test44.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test38.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test1.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test46.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test56.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test16.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test27.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test10.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test64.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test8.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test4.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test53.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test34.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test49.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test36.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test15.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test13.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test23.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test20.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test21.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test50.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test17.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test26.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test24.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test19.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test52.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test57.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test6.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test55.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test47.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test58.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test22.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test28.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test69.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test7.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test37.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test33.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test25.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test12.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test3.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test2.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test31.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test66.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test39.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test42.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test67.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test45.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test43.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test40.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test61.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test48.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test18.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test51.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test41.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test65.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test62.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test54.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test35.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test63.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test32.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test30.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test14.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test5.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test68.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_float/test11.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_string/test9.json
    Parser: Jsonifier  Passed: /home/loki/JsonBenchmark/data/validate_string/test1.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_string/test10.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_string/test8.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_string/test6.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_string/test3.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_string/test2.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_string/test5.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /home/loki/JsonBenchmark/data/validate_string/test11.json
Loki-Astari commented 2 months ago
loki@linuxcave:~/JsonBenchmark$ uname -a
Linux linuxcave 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 02:32:42 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
loki@linuxcave:~/JsonBenchmark$
RealTimeChris commented 2 months ago

Alright so when I run: git clone https://github.com/RealTimeChris/JsonBenchmark --branch=AddJsonPerformance cd JsonBenchmark ./configure make ./runOneTest I get the following: image

Loki-Astari commented 2 months ago

That's basically what I did.

Can you check the ownership and permission of the directories? Especially the data directory (thats where all the test data lives).

Basically the call to opendir() is returning null. From the man page:

     The opendir() function opens the directory named by filename, associates a directory stream with it and returns a pointer to be used to identify the directory stream in subsequent operations.  The pointer
     NULL is returned if filename cannot be accessed, or if it cannot malloc(3) enough memory to hold the whole thing.
RealTimeChris commented 2 months ago

-rwxrwxrwx 1 chris chris 9051 Sep 5 02:30 LICENSE -rwxrwxrwx 1 chris chris 156 Sep 5 02:30 Makefile -rwxrwxrwx 1 chris chris 962 Sep 5 02:31 Makefile.config -rwxrwxrwx 1 chris chris 213 Sep 5 02:30 Makefile.config.in -rwxrwxrwx 1 chris chris 1 Sep 5 02:31 Makefile.extra -rwxrwxrwx 1 chris chris 1 Sep 5 02:30 Makefile.extra.am -rwxrwxrwx 1 chris chris 1 Sep 5 02:30 Makefile.extra.in -rwxrwxrwx 1 chris chris 154 Sep 5 02:30 Notes.2024 -rwxrwxrwx 1 chris chris 6090 Sep 5 02:30 README.md drwxrwxrwx 18 chris chris 4096 Sep 5 02:31 build -rwxrwxrwx 1 chris chris 2512 Sep 5 02:31 config.h -rwxrwxrwx 1 chris chris 2260 Sep 5 02:30 config.h.in -rwxrwxrwx 1 chris chris 32883 Sep 5 02:31 config.log -rwxrwxrwx 1 chris chris 69261 Sep 5 02:31 config.status -rwxrwxrwx 1 chris chris 631278 Sep 5 02:30 configure -rwxrwxrwx 1 chris chris 714 Sep 5 02:30 configure.ac drwxrwxrwx 8 chris chris 4096 Sep 5 02:30 data -rwxrwxrwx 1 chris chris 3440 Sep 5 02:30 git_deploy_key.enc drwxrwxrwx 2 chris chris 4096 Sep 5 02:30 init -rwxrwxrwx 1 chris chris 305 Sep 5 02:30 init3rdParty -rwxrwxrwx 1 chris chris 448 Sep 5 02:30 initPlatform -rwxrwxrwx 1 chris chris 354235 Sep 5 02:31 libtool -rwxrwxrwx 1 chris chris 623 Sep 5 02:38 runOneTest drwxrwxrwx 2 chris chris 4096 Sep 5 02:30 script -rwxrwxrwx 1 chris chris 947 Sep 5 02:30 setUpNewProject drwxrwxrwx 5 chris chris 4096 Sep 5 02:30 src -rwxrwxrwx 1 chris chris 23 Sep 5 02:31 stamp-h1 drwxrwxrwx 3 chris chris 4096 Sep 5 02:30 thirdparty

Loki-Astari commented 2 months ago

Can you change line 102 in src/benchmark/filesystem.h to

 throw std::runtime_error(std::string("ThorsAnvil::FileSystem::DirectoryIterator: DirectoryFailed to Create Dir Object: >") + path.str() + "<");

That way we can verify that it is trying to open the correct directory.

RealTimeChris commented 2 months ago

image

Loki-Astari commented 2 months ago

Does not look you compiled before running. Does not include the file information.

RealTimeChris commented 2 months ago

image

Loki-Astari commented 2 months ago

If you have compiled then it looks like it is picking up another shared library from somewhere.

Did you run make install at some point? That would have installed the libraries in the system foleder.

check and remove anything you have installed in the system

rm -rf /usr/local/include/Memory
rm -rf /usr/local/include/ThirdParty
rm -rf /usr/local/bin/benchmark
rm -rf /usr/local/bin/memory
rm -rf /usr/local/lib/libMemory.so
rm -rf /usr/local/lib/LIBThirdParty.so
Loki-Astari commented 2 months ago

Check which benchmark you are running

loki@linuxcave:~/JsonBenchmark$ which benchmark
/home/loki/JsonBenchmark/build/bin/benchmark
loki@linuxcave:~/JsonBenchmark$ ldd /home/loki/JsonBenchmark/build/bin/benchmark
    linux-vdso.so.1 (0x0000e09964412000)
    libThirdParty.so => /home/loki/JsonBenchmark/build/lib/libThirdParty.so (0x0000e09964350000)
    libstdc++.so.6 => /lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000e09964000000)
    libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000e09964310000)
    libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000e09963e40000)
    /lib/ld-linux-aarch64.so.1 (0x0000e099643d5000)
    libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000e09963d90000)
Loki-Astari commented 2 months ago

OK. Have to go to bed. I'll check back in the morning.

RealTimeChris commented 2 months ago

I found the issue - it was because there was a benchmark file in /usr/local/bin that it was running for some reason lol.

Loki-Astari commented 2 months ago

Glad that worked out.

RealTimeChris commented 2 months ago

Alright so I think I've got it successfully building and running on the https://github.com/RealTimeChris/JsonBenchmark/tree/AddJsonifier branch.

Loki-Astari commented 2 months ago

I get an error here:

src/ThirdParty/../../thirdparty/jsonifier/Include/jsonifier/Validate_Impl.hpp:95:32: error: '&&' within '||' [-Werror,-Wlogical-op-parentheses]
                        if (!*iter || **iter != ',' && **iter != '}') {
                                   ~~ ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
src/ThirdParty/../../thirdparty/jsonifier/Include/jsonifier/Validate_Impl.hpp:95:32: note: place parentheses around the '&&' expression to silence this warning
                        if (!*iter || **iter != ',' && **iter != '}') {
                                                    ^
                                      (                             )
src/ThirdParty/../../thirdparty/jsonifier/Include/jsonifier/Validate_Impl.hpp:154:32: error: '&&' within '||' [-Werror,-Wlogical-op-parentheses]
                        if (!*iter || **iter != ',' && **iter != ']') {
                                   ~~ ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
src/ThirdParty/../../thirdparty/jsonifier/Include/jsonifier/Validate_Impl.hpp:154:32: note: place parentheses around the '&&' expression to silence this warning
                        if (!*iter || **iter != ',' && **iter != ']') {
Loki-Astari commented 2 months ago

I can suppress it with -Wno-logical-op-parentheses

Loki-Astari commented 2 months ago

And this:

src/ThirdParty/../../thirdparty/jsonifier/Include/jsonifier/ISA/SimdCommon.hpp:53:42: error: 'static' function 'prefixXor' declared in header file should be declared 'static inline' [-Werror,-Wunneeded-internal-declaration]
        JSONIFIER_ALWAYS_INLINE static uint64_t prefixXor(uint64_t prevInString) noexcept {
Loki-Astari commented 2 months ago

Suppressed with -Wno-unneeded-internal-declaration

Loki-Astari commented 2 months ago

I get:

BatCave-2:JsonBenchmark martinyork$ vi runOneTest
BatCave-2:JsonBenchmark martinyork$ ./runOneTest
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_pass/pass01.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_pass/pass03.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_pass/pass02.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail12.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail04.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail28.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail08.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail24.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail32.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail33.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail25.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail09.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail29.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail05.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail13.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail22.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail14.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail02.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail03.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail15.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail23.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail19.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail20.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail16.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail17.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail21.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail06.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail10.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail30.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail26.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail27.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail31.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail11.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/jsonchecker_fail/fail07.json
        Parse          canada.json          ...  0.131 ms  1.64e+04 MB/s
        Stringify      canada.json          ... 8.3e-05 ms  2.59e+07 MB/s
        Prettify       canada.json          ... 4.1e-05 ms  5.24e+07 MB/s
        SaxRoundtrip   canada.json          ...  0.135 ms  1.59e+04 MB/s
        Parse          twitter.json         ... 0.0393 ms  1.53e+04 MB/s
        Stringify      twitter.json         ... 0.000166 ms  3.63e+06 MB/s
        Prettify       twitter.json         ... 0.000125 ms  4.82e+06 MB/s
        SaxRoundtrip   twitter.json         ... 0.0371 ms  1.62e+04 MB/s
        Parse          citm_catalog.json    ...  0.101 ms  1.64e+04 MB/s
        Stringify      citm_catalog.json    ... 0.000166 ms  9.92e+06 MB/s
        Prettify       citm_catalog.json    ... 0.000167 ms  9.86e+06 MB/s
        SaxRoundtrip   citm_catalog.json    ...  0.101 ms  1.63e+04 MB/s
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/roundtrip/roundtrip25.json
./runOneTest: line 17: 29514 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29515 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29516 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29517 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29518 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29519 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/roundtrip/roundtrip24.json
./runOneTest: line 17: 29521 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29522 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/roundtrip/roundtrip23.json
./runOneTest: line 17: 29524 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29525 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/roundtrip/roundtrip22.json
./runOneTest: line 17: 29527 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29528 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29529 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29530 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/roundtrip/roundtrip21.json
./runOneTest: line 17: 29532 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29533 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/roundtrip/roundtrip27.json
./runOneTest: line 17: 29535 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29536 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29537 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
./runOneTest: line 17: 29538 Segmentation fault: 11  benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/roundtrip/roundtrip26.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test53.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test45.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test12.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test69.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test28.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test49.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test65.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test32.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test24.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test25.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test33.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test64.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test48.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test29.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test68.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test13.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test44.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test1.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test52.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test59.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test18.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test63.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test34.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test22.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test55.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test6.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test43.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test14.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test38.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test39.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test15.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test42.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test7.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test54.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test23.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test35.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test62.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test19.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test58.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test20.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test36.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test61.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test8.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test16.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test41.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test4.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test57.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test56.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test5.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test40.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test17.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test9.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test60.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test37.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test21.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test10.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test47.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test2.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test51.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test26.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test30.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test67.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test66.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test31.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test27.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test50.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test3.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test46.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_float/test11.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_string/test1.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_string/test6.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_string/test8.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_string/test5.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_string/test9.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_string/test10.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_string/test2.json
    Parser: Jsonifier  Passed: /Users/martinyork/X/JsonBenchmark/data/validate_string/test3.json
    Parser: Jsonifier
        Pass:            0
        Fail:            1
            Failed: /Users/martinyork/X/JsonBenchmark/data/validate_string/test11.json
RealTimeChris commented 2 months ago
Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/jsonchecker_pass/pass03.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/jsonchecker_pass/pass01.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_pass/pass02.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail17.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail13.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail19.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail05.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail12.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail20.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail24.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail15.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail27.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail14.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail16.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail03.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail04.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail02.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail11.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail26.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail10.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail21.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail22.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail29.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail25.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail23.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail06.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail31.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail32.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail30.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail09.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail08.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail07.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail28.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/jsonchecker_fail/fail33.json
                Parse          twitter.json         ... 0.0364 ms  1.66e+04 MB/s
                Stringify      twitter.json         ... 0.000206 ms  2.92e+06 MB/s
                Prettify       twitter.json         ... 0.000206 ms  2.92e+06 MB/s
                SaxRoundtrip   twitter.json         ... 0.0352 ms  1.71e+04 MB/s
                Parse          citm_catalog.json    ... 0.0957 ms  1.72e+04 MB/s
                Stringify      citm_catalog.json    ... 0.000206 ms  8e+06 MB/s
                Prettify       citm_catalog.json    ... 0.000309 ms  5.33e+06 MB/s
                SaxRoundtrip   citm_catalog.json    ... 0.0964 ms  1.71e+04 MB/s
                Parse          canada.json          ...  0.134 ms  1.61e+04 MB/s
                Stringify      canada.json          ... 0.000103 ms  2.08e+07 MB/s
                Prettify       canada.json          ... 0.000103 ms  2.08e+07 MB/s
                SaxRoundtrip   canada.json          ...  0.142 ms  1.51e+04 MB/s
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828484 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828485 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828486 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828487 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828488 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828489 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828490 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828491 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828492 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/roundtrip/roundtrip27.json
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828494 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828495 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828496 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/roundtrip/roundtrip21.json
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828498 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/roundtrip/roundtrip23.json
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828500 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/roundtrip/roundtrip26.json
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828502 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/roundtrip/roundtrip25.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/roundtrip/roundtrip24.json
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828505 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828506 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/roundtrip/roundtrip22.json
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828508 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828509 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast
./runOneTest: line 17: 828510 Aborted                 benchmark --append --filter=${filter} --parser=${parser} ${flags} Conformance.csv Performance.csv
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test25.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test28.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test12.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test51.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test43.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test57.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test54.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test18.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test30.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test41.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test13.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test52.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test22.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test60.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test65.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test21.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test45.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test40.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test2.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test10.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test38.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test4.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test44.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test16.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test39.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test48.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test29.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test53.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test37.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test59.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test33.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test6.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test9.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test46.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test1.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test32.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test11.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test61.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test64.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test67.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test56.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test34.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test66.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test68.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test55.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test58.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test47.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test3.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test7.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test19.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test8.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test14.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test20.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test26.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test27.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test50.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test62.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test42.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test5.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test35.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test49.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test17.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test69.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test24.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test15.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test23.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test63.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test31.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_float/test36.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_string/test2.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_string/test10.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_string/test6.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_string/test9.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_string/test1.json
        Parser: Jsonifier
                Pass:            0
                Fail:            1
                        Failed: /home/chris/JsonBenchmark/data/validate_string/test11.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_string/test3.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_string/test8.json
        Parser: Jsonifier  Passed: /home/chris/JsonBenchmark/data/validate_string/test5.json
RealTimeChris commented 2 months ago

What does it mean that it segfaulted on those tests? Does that invalidate the performance results at all?

Loki-Astari commented 2 months ago

The performance tests look good:

                Parse          twitter.json         ... 0.0364 ms  1.66e+04 MB/s
                Stringify      twitter.json         ... 0.000206 ms  2.92e+06 MB/s
                Prettify       twitter.json         ... 0.000206 ms  2.92e+06 MB/s
                SaxRoundtrip   twitter.json         ... 0.0352 ms  1.71e+04 MB/s
                Parse          citm_catalog.json    ... 0.0957 ms  1.72e+04 MB/s
                Stringify      citm_catalog.json    ... 0.000206 ms  8e+06 MB/s
                Prettify       citm_catalog.json    ... 0.000309 ms  5.33e+06 MB/s
                SaxRoundtrip   citm_catalog.json    ... 0.0964 ms  1.71e+04 MB/s
                Parse          canada.json          ...  0.134 ms  1.61e+04 MB/s
                Stringify      canada.json          ... 0.000103 ms  2.08e+07 MB/s
                Prettify       canada.json          ... 0.000103 ms  2.08e+07 MB/s
                SaxRoundtrip   canada.json          ...  0.142 ms  1.51e+04 MB/s

Any test that segfaults is the same as failing the test.

So it looks like a bunch of the roundtrip tests failed.

The actual output that is used by php script to show display the graphs.

BatCave-2:JsonBenchmark martinyork$ cat Performance.csv
1. Parse,Jsonifier,canada.json,0.131084,56,56,1,0,0,0
2. Stringify,Jsonifier,canada.json,4.1e-05,80,80,2,0,0,0
3. Prettify,Jsonifier,canada.json,4.2e-05,80,80,2,0,0,0
5. SaxRoundtrip,Jsonifier,canada.json,0.131167,80,136,3,0,0,0
1. Parse,Jsonifier,twitter.json,0.03825,184,184,1,0,0,0
2. Stringify,Jsonifier,twitter.json,0.000125,288,288,2,0,0,0
3. Prettify,Jsonifier,twitter.json,0.000125,288,288,2,0,0,0
5. SaxRoundtrip,Jsonifier,twitter.json,0.037166,288,472,3,0,0,0
1. Parse,Jsonifier,citm_catalog.json,0.100667,272,272,1,0,0,0
2. Stringify,Jsonifier,citm_catalog.json,0.000208,336,336,2,0,0,0
3. Prettify,Jsonifier,citm_catalog.json,0.000167,336,336,2,0,0,0
5. SaxRoundtrip,Jsonifier,citm_catalog.json,0.100834,336,608,3,0,0,0
BatCave-2:JsonBenchmark martinyork$ cat Conformance.csv
1. Parse Validation,Jsonifier,pass01,true
1. Parse Validation,Jsonifier,pass03,true
1. Parse Validation,Jsonifier,pass02,false
1. Parse Validation,Jsonifier,fail12,false
1. Parse Validation,Jsonifier,fail04,true
1. Parse Validation,Jsonifier,fail28,false
1. Parse Validation,Jsonifier,fail08,false
1. Parse Validation,Jsonifier,fail24,false
1. Parse Validation,Jsonifier,fail32,false
1. Parse Validation,Jsonifier,fail33,false
1. Parse Validation,Jsonifier,fail25,true
1. Parse Validation,Jsonifier,fail09,false
1. Parse Validation,Jsonifier,fail29,false
1. Parse Validation,Jsonifier,fail05,true
1. Parse Validation,Jsonifier,fail13,false
1. Parse Validation,Jsonifier,fail22,false
1. Parse Validation,Jsonifier,fail14,false
1. Parse Validation,Jsonifier,fail02,false
1. Parse Validation,Jsonifier,fail03,false
1. Parse Validation,Jsonifier,fail15,false
1. Parse Validation,Jsonifier,fail23,false
1. Parse Validation,Jsonifier,fail19,false
1. Parse Validation,Jsonifier,fail20,false
1. Parse Validation,Jsonifier,fail16,false
1. Parse Validation,Jsonifier,fail17,false
1. Parse Validation,Jsonifier,fail21,false
1. Parse Validation,Jsonifier,fail06,false
1. Parse Validation,Jsonifier,fail10,false
1. Parse Validation,Jsonifier,fail30,false
1. Parse Validation,Jsonifier,fail26,false
1. Parse Validation,Jsonifier,fail27,true
1. Parse Validation,Jsonifier,fail31,false
1. Parse Validation,Jsonifier,fail11,false
1. Parse Validation,Jsonifier,fail07,false
4. Roundtrip,Jsonifier,roundtrip25,false
4. Roundtrip,Jsonifier,roundtrip24,false
4. Roundtrip,Jsonifier,roundtrip23,false
4. Roundtrip,Jsonifier,roundtrip22,false
4. Roundtrip,Jsonifier,roundtrip21,false
4. Roundtrip,Jsonifier,roundtrip27,false
4. Roundtrip,Jsonifier,roundtrip26,false
2. Parse Double,Jsonifier,test53,true
2. Parse Double,Jsonifier,test45,true
2. Parse Double,Jsonifier,test12,true
2. Parse Double,Jsonifier,test69,true
2. Parse Double,Jsonifier,test28,true
2. Parse Double,Jsonifier,test49,true
2. Parse Double,Jsonifier,test65,true
2. Parse Double,Jsonifier,test32,true
2. Parse Double,Jsonifier,test24,true
2. Parse Double,Jsonifier,test25,true
2. Parse Double,Jsonifier,test33,true
2. Parse Double,Jsonifier,test64,true
2. Parse Double,Jsonifier,test48,true
2. Parse Double,Jsonifier,test29,true
2. Parse Double,Jsonifier,test68,true
2. Parse Double,Jsonifier,test13,true
2. Parse Double,Jsonifier,test44,true
2. Parse Double,Jsonifier,test1,true
2. Parse Double,Jsonifier,test52,true
2. Parse Double,Jsonifier,test59,true
2. Parse Double,Jsonifier,test18,true
2. Parse Double,Jsonifier,test63,true
2. Parse Double,Jsonifier,test34,true
2. Parse Double,Jsonifier,test22,true
2. Parse Double,Jsonifier,test55,true
2. Parse Double,Jsonifier,test6,true
2. Parse Double,Jsonifier,test43,true
2. Parse Double,Jsonifier,test14,true
2. Parse Double,Jsonifier,test38,true
2. Parse Double,Jsonifier,test39,true
2. Parse Double,Jsonifier,test15,true
2. Parse Double,Jsonifier,test42,true
2. Parse Double,Jsonifier,test7,true
2. Parse Double,Jsonifier,test54,true
2. Parse Double,Jsonifier,test23,true
2. Parse Double,Jsonifier,test35,true
2. Parse Double,Jsonifier,test62,true
2. Parse Double,Jsonifier,test19,true
2. Parse Double,Jsonifier,test58,true
2. Parse Double,Jsonifier,test20,true
2. Parse Double,Jsonifier,test36,true
2. Parse Double,Jsonifier,test61,true
2. Parse Double,Jsonifier,test8,true
2. Parse Double,Jsonifier,test16,true
2. Parse Double,Jsonifier,test41,true
2. Parse Double,Jsonifier,test4,true
2. Parse Double,Jsonifier,test57,true
2. Parse Double,Jsonifier,test56,true
2. Parse Double,Jsonifier,test5,true
2. Parse Double,Jsonifier,test40,true
2. Parse Double,Jsonifier,test17,true
2. Parse Double,Jsonifier,test9,true
2. Parse Double,Jsonifier,test60,true
2. Parse Double,Jsonifier,test37,true
2. Parse Double,Jsonifier,test21,true
2. Parse Double,Jsonifier,test10,true
2. Parse Double,Jsonifier,test47,true
2. Parse Double,Jsonifier,test2,true
2. Parse Double,Jsonifier,test51,true
2. Parse Double,Jsonifier,test26,true
2. Parse Double,Jsonifier,test30,true
2. Parse Double,Jsonifier,test67,true
2. Parse Double,Jsonifier,test66,true
2. Parse Double,Jsonifier,test31,true
2. Parse Double,Jsonifier,test27,true
2. Parse Double,Jsonifier,test50,true
2. Parse Double,Jsonifier,test3,true
2. Parse Double,Jsonifier,test46,true
2. Parse Double,Jsonifier,test11,true
3. Parse String,Jsonifier,test1,true
3. Parse String,Jsonifier,test6,true
3. Parse String,Jsonifier,test8,true
3. Parse String,Jsonifier,test5,true
3. Parse String,Jsonifier,test9,true
3. Parse String,Jsonifier,test10,true
3. Parse String,Jsonifier,test2,true
3. Parse String,Jsonifier,test3,true
3. Parse String,Jsonifier,test11,false
Loki-Astari commented 2 months ago

I will validate that the performance tests do what you are supposed to.

If they checkout out and you are good I will merge into master and publish tonight.
If you want more time to fix some of the failing tests let me know.

RealTimeChris commented 2 months ago

Interesting. It seems that I made an error in the code.