fabienrenaud/java-json-benchmark

Few issues

Closed this issue · 6 comments

zapov commented

Why is double comparison excluded in the model? Currently this is abused by JsonIter since it uses lossy double conversion to avoid GC. It would be better to enable double comparison and configure JsonIter to be precise with double.

Did you consider some more java-like types, eg UUID instead of String for the guid field, enum for the color/fruit, long instead of String for one id....?

Ideally it would be nice to have LocalDate, OffsetDateTime in there, but that might be a problem for few libs? Those are usually performance killer in most benches.

It's not ideal to feed different data to different libraries. It wold be ideal if random could be seeded before data is created so that results are more stable.

Why is double comparison excluded in the model?

Whatever reasons I had (probably issues with double encoding from a lib a long time ago), they seem to no longer apply so these checks are back. 006f87a

It would be better to enable double comparison and configure JsonIter to be precise with double.

Done. dae668c

It's not ideal to feed different data to different libraries. It wold be ideal if random could be seeded before data is created so that results are more stable.

Point taken. Fixed: 7dab85e

I reran the benchmarks for jackson and jsoniter with these changes:

Deserialization: SEED=18331 ./bench deser --libs jackson,jsoniter --size 10

Benchmark                                              Mode  Cnt       Score      Error  Units
c.g.f.j.databind.Deserialization.jackson              thrpt   20   93426.341 ± 4528.168  ops/s
c.g.f.j.databind.Deserialization.jackson_afterburner  thrpt   20  100350.359 ± 1369.936  ops/s
c.g.f.j.databind.Deserialization.jsoniter             thrpt   20  133871.352 ± 2684.027  ops/s
c.g.f.j.stream.Deserialization.jackson                thrpt   20  106468.704 ± 1269.537  ops/s

Serialization: SEED=18331 ./bench ser --libs jackson,jsoniter --size 10

Benchmark                                            Mode  Cnt       Score      Error  Units
c.g.f.j.databind.Serialization.jackson              thrpt   20  181343.147 ± 8794.775  ops/s
c.g.f.j.databind.Serialization.jackson_afterburner  thrpt   20  181307.865 ± 6580.918  ops/s
c.g.f.j.databind.Serialization.jsoniter             thrpt   20  247036.044 ± 6684.761  ops/s
c.g.f.j.stream.Serialization.jackson                thrpt   20  161003.406 ± 9091.186  ops/s

Did you consider some more java-like types, eg UUID instead of String for the guid field, enum for the color/fruit, long instead of String for one id....?
Ideally it would be nice to have LocalDate, OffsetDateTime in there, but that might be a problem for few libs? Those are usually performance killer in most benches.

The user model is written for testing simple pojos with simple data types and limited nesting. Other data types should be tested as part of a different/new model. I would even suggest to micro-benchmark performance of specific types of against others so devs can choose which is best for json.

The project supports multi-model testing. It's just that I haven't written any other models...

Pull requests are welcome of course. :)

PS: Thank you for your feedback for and for sharing the project on reddit.

I moved the discussion of supporting more java types here: #12
Closing this ticket now since I resolved the other issues you reported.

zapov commented

Tnx. I'll probably look into it when I build new lib version.

This is why double comparisons were disabled: occasionally some libs fail serializing/deserializing the last digit of some doubles:

com.github.fabienrenaud.jjb.databind.DeserializationTest > genson STANDARD_OUT
    Difference in Users!
       Original   : Users{users=[JsonDataObj{_id=14754479812597270941, index=1111845094, guid=3L5eIvlkmvtB51n4Iza1, isActive=true, balance=jrS2ljBYlufsc7QSLqGB, picture=gT9VtUYw7irLqv4100wv2mvM4xQYFDwecZXnZkWhCf00bm7ymM1B8ufR0bAb1ybiTZfUnTA3plEluTSqH1SAQuTN64XhgDbVG0mU, age=82, eyeColor=JdruGKlV4dvvBAIiJVpl, name=efSKcttqJGLD5VrzQC1g, gender=sC8I9u9LMZIIMwbYQs1B, company=lSIlIQi6decEDbiJ388c, email=dWlZIp0w1IaLuX1yGjjO, phone=fAvXgLhGDeNdZTKwQoBG, address=RqKNhD8XkTuVPhmNEvux, about=KdpViYvlajjKPluVyMU2, registered=3LtDylE8SAOEITSXszhH, latitude=38.703099672469115, longitude=173.30455785562415, tags=[xrER0814YS, Xnv5axtyJ7, gCevjqOMcR, Kbuu4bhvnz, nLyjxnEe8c, M7mLUcyfuJ, uDhXr3MQNi, tSiTTrcu7U, KJgAagtkQw, z4NTRz3Fko, NehDoFXH5L, gpJSFXyyxV, gv9AFCKPkI, kz5C4IGLCK, Ha1EXOxf12, bNj8JnAhJW, wbjn9IFAfI, irJPq033YX, hV7Z2EeNdv, z1vpklnGqI, TsUSLfXrsA, 5FsjFhKm7V, UMF31ypmRw, 0Z3ts8hnwQ, oeFs7a7w6g, tsTOSaQ2Wv, Yh5yyOulq9, dqmjztrVWG, 6L9znr7PSv, jlu2UJnl2j, ZnAFxcGiKP, LuPBEjJiye, l8z6VUxIh8], friends=[Friend{id=2358, name=plGQPiMCLVTPRjlQXvYKtOWHIroFEt}, Friend{id=6364, name=qjzlysxPKheMuEDVtiEYljBouNXkMu}, Friend{id=7956, name=OmJUormUqEOpzddXcjyJDzoJLcnbpN}, Friend{id=8128, name=aeLaaAWtSEuaFrxDriHjeJIIpgfwwL}, Friend{id=5093, name=qljtHhJOjiZClQLOkiHbQEiMrVbLDF}, Friend{id=7693, name=oHEqHrWuwfEDabizcmcdNrmkxNlkPx}, Friend{id=1894, name=TSXPxZuwradXIrrtKPHdrmIRCQyFoe}], greeting=2XkPztmZHl7byAJr5tYN, favoriteFruit=6xjusZGgsUkj3S69WYyN}, JsonDataObj{_id=10516416718220535624, index=1780620012, guid=AP1jYNakkUqociZrC0Hn, isActive=true, balance=rESTlYTyxDTlFdO5IpBr, picture=DzBMCexuvu1or0qj1O5RyNpupop1IhKh87seCIaGl2CMyiY3HPgtCdC7uKRdANFiXZyBQUZFzi6a8CzuLiTax1Pbvkpool7cTvuA, age=63, eyeColor=HRH5eyunDyeFTc02FeLv, name=E2XoAQMnZidQCOx0qonC, gender=ZO8S4b6eDWK9CqsukKCC, company=IRhDANKMhU16iF8XV6Kx, email=x0tn5ZVrONM7CZIIPNWx, phone=mtFcf75AH8e6ustp3FPF, address=mACGsZfF4P10Ul6W8QKX, about=IeZhZwbq1Oobb3T9BILi, registered=GKqryqFTQVZeA7ajZRm2, latitude=36.562117005616884, longitude=30.578460210624133, tags=[], friends=[], greeting=LGK1xJ8OstXNnaHDYvgl, favoriteFruit=alOZnd8i92UtpChHQjUd}]}
       Transformed: Users{users=[JsonDataObj{_id=14754479812597270941, index=1111845094, guid=3L5eIvlkmvtB51n4Iza1, isActive=true, balance=jrS2ljBYlufsc7QSLqGB, picture=gT9VtUYw7irLqv4100wv2mvM4xQYFDwecZXnZkWhCf00bm7ymM1B8ufR0bAb1ybiTZfUnTA3plEluTSqH1SAQuTN64XhgDbVG0mU, age=82, eyeColor=JdruGKlV4dvvBAIiJVpl, name=efSKcttqJGLD5VrzQC1g, gender=sC8I9u9LMZIIMwbYQs1B, company=lSIlIQi6decEDbiJ388c, email=dWlZIp0w1IaLuX1yGjjO, phone=fAvXgLhGDeNdZTKwQoBG, address=RqKNhD8XkTuVPhmNEvux, about=KdpViYvlajjKPluVyMU2, registered=3LtDylE8SAOEITSXszhH, latitude=38.703099672469115, longitude=173.30455785562415, tags=[xrER0814YS, Xnv5axtyJ7, gCevjqOMcR, Kbuu4bhvnz, nLyjxnEe8c, M7mLUcyfuJ, uDhXr3MQNi, tSiTTrcu7U, KJgAagtkQw, z4NTRz3Fko, NehDoFXH5L, gpJSFXyyxV, gv9AFCKPkI, kz5C4IGLCK, Ha1EXOxf12, bNj8JnAhJW, wbjn9IFAfI, irJPq033YX, hV7Z2EeNdv, z1vpklnGqI, TsUSLfXrsA, 5FsjFhKm7V, UMF31ypmRw, 0Z3ts8hnwQ, oeFs7a7w6g, tsTOSaQ2Wv, Yh5yyOulq9, dqmjztrVWG, 6L9znr7PSv, jlu2UJnl2j, ZnAFxcGiKP, LuPBEjJiye, l8z6VUxIh8], friends=[Friend{id=2358, name=plGQPiMCLVTPRjlQXvYKtOWHIroFEt}, Friend{id=6364, name=qjzlysxPKheMuEDVtiEYljBouNXkMu}, Friend{id=7956, name=OmJUormUqEOpzddXcjyJDzoJLcnbpN}, Friend{id=8128, name=aeLaaAWtSEuaFrxDriHjeJIIpgfwwL}, Friend{id=5093, name=qljtHhJOjiZClQLOkiHbQEiMrVbLDF}, Friend{id=7693, name=oHEqHrWuwfEDabizcmcdNrmkxNlkPx}, Friend{id=1894, name=TSXPxZuwradXIrrtKPHdrmIRCQyFoe}], greeting=2XkPztmZHl7byAJr5tYN, favoriteFruit=6xjusZGgsUkj3S69WYyN}, JsonDataObj{_id=10516416718220535624, index=1780620012, guid=AP1jYNakkUqociZrC0Hn, isActive=true, balance=rESTlYTyxDTlFdO5IpBr, picture=DzBMCexuvu1or0qj1O5RyNpupop1IhKh87seCIaGl2CMyiY3HPgtCdC7uKRdANFiXZyBQUZFzi6a8CzuLiTax1Pbvkpool7cTvuA, age=63, eyeColor=HRH5eyunDyeFTc02FeLv, name=E2XoAQMnZidQCOx0qonC, gender=ZO8S4b6eDWK9CqsukKCC, company=IRhDANKMhU16iF8XV6Kx, email=x0tn5ZVrONM7CZIIPNWx, phone=mtFcf75AH8e6ustp3FPF, address=mACGsZfF4P10Ul6W8QKX, about=IeZhZwbq1Oobb3T9BILi, registered=GKqryqFTQVZeA7ajZRm2, latitude=36.56211700561688, longitude=30.578460210624133, tags=[], friends=[], greeting=LGK1xJ8OstXNnaHDYvgl, favoriteFruit=alOZnd8i92UtpChHQjUd}]}


com.github.fabienrenaud.jjb.databind.DeserializationTest > genson FAILED
    java.lang.AssertionError

com.github.fabienrenaud.jjb.databind.DeserializationTest > boon STANDARD_OUT
    Difference in Users!
       Original   : Users{users=[JsonDataObj{_id=14754479812597270941, index=1111845094, guid=3L5eIvlkmvtB51n4Iza1, isActive=true, balance=jrS2ljBYlufsc7QSLqGB, picture=gT9VtUYw7irLqv4100wv2mvM4xQYFDwecZXnZkWhCf00bm7ymM1B8ufR0bAb1ybiTZfUnTA3plEluTSqH1SAQuTN64XhgDbVG0mU, age=82, eyeColor=JdruGKlV4dvvBAIiJVpl, name=efSKcttqJGLD5VrzQC1g, gender=sC8I9u9LMZIIMwbYQs1B, company=lSIlIQi6decEDbiJ388c, email=dWlZIp0w1IaLuX1yGjjO, phone=fAvXgLhGDeNdZTKwQoBG, address=RqKNhD8XkTuVPhmNEvux, about=KdpViYvlajjKPluVyMU2, registered=3LtDylE8SAOEITSXszhH, latitude=38.703099672469115, longitude=173.30455785562415, tags=[xrER0814YS, Xnv5axtyJ7, gCevjqOMcR, Kbuu4bhvnz, nLyjxnEe8c, M7mLUcyfuJ, uDhXr3MQNi, tSiTTrcu7U, KJgAagtkQw, z4NTRz3Fko, NehDoFXH5L, gpJSFXyyxV, gv9AFCKPkI, kz5C4IGLCK, Ha1EXOxf12, bNj8JnAhJW, wbjn9IFAfI, irJPq033YX, hV7Z2EeNdv, z1vpklnGqI, TsUSLfXrsA, 5FsjFhKm7V, UMF31ypmRw, 0Z3ts8hnwQ, oeFs7a7w6g, tsTOSaQ2Wv, Yh5yyOulq9, dqmjztrVWG, 6L9znr7PSv, jlu2UJnl2j, ZnAFxcGiKP, LuPBEjJiye, l8z6VUxIh8], friends=[Friend{id=2358, name=plGQPiMCLVTPRjlQXvYKtOWHIroFEt}, Friend{id=6364, name=qjzlysxPKheMuEDVtiEYljBouNXkMu}, Friend{id=7956, name=OmJUormUqEOpzddXcjyJDzoJLcnbpN}, Friend{id=8128, name=aeLaaAWtSEuaFrxDriHjeJIIpgfwwL}, Friend{id=5093, name=qljtHhJOjiZClQLOkiHbQEiMrVbLDF}, Friend{id=7693, name=oHEqHrWuwfEDabizcmcdNrmkxNlkPx}, Friend{id=1894, name=TSXPxZuwradXIrrtKPHdrmIRCQyFoe}], greeting=2XkPztmZHl7byAJr5tYN, favoriteFruit=6xjusZGgsUkj3S69WYyN}, JsonDataObj{_id=10516416718220535624, index=1780620012, guid=AP1jYNakkUqociZrC0Hn, isActive=true, balance=rESTlYTyxDTlFdO5IpBr, picture=DzBMCexuvu1or0qj1O5RyNpupop1IhKh87seCIaGl2CMyiY3HPgtCdC7uKRdANFiXZyBQUZFzi6a8CzuLiTax1Pbvkpool7cTvuA, age=63, eyeColor=HRH5eyunDyeFTc02FeLv, name=E2XoAQMnZidQCOx0qonC, gender=ZO8S4b6eDWK9CqsukKCC, company=IRhDANKMhU16iF8XV6Kx, email=x0tn5ZVrONM7CZIIPNWx, phone=mtFcf75AH8e6ustp3FPF, address=mACGsZfF4P10Ul6W8QKX, about=IeZhZwbq1Oobb3T9BILi, registered=GKqryqFTQVZeA7ajZRm2, latitude=36.562117005616884, longitude=30.578460210624133, tags=[], friends=[], greeting=LGK1xJ8OstXNnaHDYvgl, favoriteFruit=alOZnd8i92UtpChHQjUd}]}
       Transformed: Users{users=[JsonDataObj{_id=14754479812597270941, index=1111845094, guid=3L5eIvlkmvtB51n4Iza1, isActive=true, balance=jrS2ljBYlufsc7QSLqGB, picture=gT9VtUYw7irLqv4100wv2mvM4xQYFDwecZXnZkWhCf00bm7ymM1B8ufR0bAb1ybiTZfUnTA3plEluTSqH1SAQuTN64XhgDbVG0mU, age=82, eyeColor=JdruGKlV4dvvBAIiJVpl, name=efSKcttqJGLD5VrzQC1g, gender=sC8I9u9LMZIIMwbYQs1B, company=lSIlIQi6decEDbiJ388c, email=dWlZIp0w1IaLuX1yGjjO, phone=fAvXgLhGDeNdZTKwQoBG, address=RqKNhD8XkTuVPhmNEvux, about=KdpViYvlajjKPluVyMU2, registered=3LtDylE8SAOEITSXszhH, latitude=38.703099672469115, longitude=173.30455785562415, tags=[xrER0814YS, Xnv5axtyJ7, gCevjqOMcR, Kbuu4bhvnz, nLyjxnEe8c, M7mLUcyfuJ, uDhXr3MQNi, tSiTTrcu7U, KJgAagtkQw, z4NTRz3Fko, NehDoFXH5L, gpJSFXyyxV, gv9AFCKPkI, kz5C4IGLCK, Ha1EXOxf12, bNj8JnAhJW, wbjn9IFAfI, irJPq033YX, hV7Z2EeNdv, z1vpklnGqI, TsUSLfXrsA, 5FsjFhKm7V, UMF31ypmRw, 0Z3ts8hnwQ, oeFs7a7w6g, tsTOSaQ2Wv, Yh5yyOulq9, dqmjztrVWG, 6L9znr7PSv, jlu2UJnl2j, ZnAFxcGiKP, LuPBEjJiye, l8z6VUxIh8], friends=[Friend{id=2358, name=plGQPiMCLVTPRjlQXvYKtOWHIroFEt}, Friend{id=6364, name=qjzlysxPKheMuEDVtiEYljBouNXkMu}, Friend{id=7956, name=OmJUormUqEOpzddXcjyJDzoJLcnbpN}, Friend{id=8128, name=aeLaaAWtSEuaFrxDriHjeJIIpgfwwL}, Friend{id=5093, name=qljtHhJOjiZClQLOkiHbQEiMrVbLDF}, Friend{id=7693, name=oHEqHrWuwfEDabizcmcdNrmkxNlkPx}, Friend{id=1894, name=TSXPxZuwradXIrrtKPHdrmIRCQyFoe}], greeting=2XkPztmZHl7byAJr5tYN, favoriteFruit=6xjusZGgsUkj3S69WYyN}, JsonDataObj{_id=10516416718220535624, index=1780620012, guid=AP1jYNakkUqociZrC0Hn, isActive=true, balance=rESTlYTyxDTlFdO5IpBr, picture=DzBMCexuvu1or0qj1O5RyNpupop1IhKh87seCIaGl2CMyiY3HPgtCdC7uKRdANFiXZyBQUZFzi6a8CzuLiTax1Pbvkpool7cTvuA, age=63, eyeColor=HRH5eyunDyeFTc02FeLv, name=E2XoAQMnZidQCOx0qonC, gender=ZO8S4b6eDWK9CqsukKCC, company=IRhDANKMhU16iF8XV6Kx, email=x0tn5ZVrONM7CZIIPNWx, phone=mtFcf75AH8e6ustp3FPF, address=mACGsZfF4P10Ul6W8QKX, about=IeZhZwbq1Oobb3T9BILi, registered=GKqryqFTQVZeA7ajZRm2, latitude=36.56211700561688, longitude=30.578460210624133, tags=[], friends=[], greeting=LGK1xJ8OstXNnaHDYvgl, favoriteFruit=alOZnd8i92UtpChHQjUd}]}


com.github.fabienrenaud.jjb.databind.DeserializationTest > boon FAILED
    java.lang.AssertionError

com.github.fabienrenaud.jjb.databind.DeserializationTest > dsljson STANDARD_OUT
    Difference in Users!
       Original   : Users{users=[JsonDataObj{_id=14754479812597270941, index=1111845094, guid=3L5eIvlkmvtB51n4Iza1, isActive=true, balance=jrS2ljBYlufsc7QSLqGB, picture=gT9VtUYw7irLqv4100wv2mvM4xQYFDwecZXnZkWhCf00bm7ymM1B8ufR0bAb1ybiTZfUnTA3plEluTSqH1SAQuTN64XhgDbVG0mU, age=82, eyeColor=JdruGKlV4dvvBAIiJVpl, name=efSKcttqJGLD5VrzQC1g, gender=sC8I9u9LMZIIMwbYQs1B, company=lSIlIQi6decEDbiJ388c, email=dWlZIp0w1IaLuX1yGjjO, phone=fAvXgLhGDeNdZTKwQoBG, address=RqKNhD8XkTuVPhmNEvux, about=KdpViYvlajjKPluVyMU2, registered=3LtDylE8SAOEITSXszhH, latitude=38.703099672469115, longitude=173.30455785562415, tags=[xrER0814YS, Xnv5axtyJ7, gCevjqOMcR, Kbuu4bhvnz, nLyjxnEe8c, M7mLUcyfuJ, uDhXr3MQNi, tSiTTrcu7U, KJgAagtkQw, z4NTRz3Fko, NehDoFXH5L, gpJSFXyyxV, gv9AFCKPkI, kz5C4IGLCK, Ha1EXOxf12, bNj8JnAhJW, wbjn9IFAfI, irJPq033YX, hV7Z2EeNdv, z1vpklnGqI, TsUSLfXrsA, 5FsjFhKm7V, UMF31ypmRw, 0Z3ts8hnwQ, oeFs7a7w6g, tsTOSaQ2Wv, Yh5yyOulq9, dqmjztrVWG, 6L9znr7PSv, jlu2UJnl2j, ZnAFxcGiKP, LuPBEjJiye, l8z6VUxIh8], friends=[Friend{id=2358, name=plGQPiMCLVTPRjlQXvYKtOWHIroFEt}, Friend{id=6364, name=qjzlysxPKheMuEDVtiEYljBouNXkMu}, Friend{id=7956, name=OmJUormUqEOpzddXcjyJDzoJLcnbpN}, Friend{id=8128, name=aeLaaAWtSEuaFrxDriHjeJIIpgfwwL}, Friend{id=5093, name=qljtHhJOjiZClQLOkiHbQEiMrVbLDF}, Friend{id=7693, name=oHEqHrWuwfEDabizcmcdNrmkxNlkPx}, Friend{id=1894, name=TSXPxZuwradXIrrtKPHdrmIRCQyFoe}], greeting=2XkPztmZHl7byAJr5tYN, favoriteFruit=6xjusZGgsUkj3S69WYyN}, JsonDataObj{_id=10516416718220535624, index=1780620012, guid=AP1jYNakkUqociZrC0Hn, isActive=true, balance=rESTlYTyxDTlFdO5IpBr, picture=DzBMCexuvu1or0qj1O5RyNpupop1IhKh87seCIaGl2CMyiY3HPgtCdC7uKRdANFiXZyBQUZFzi6a8CzuLiTax1Pbvkpool7cTvuA, age=63, eyeColor=HRH5eyunDyeFTc02FeLv, name=E2XoAQMnZidQCOx0qonC, gender=ZO8S4b6eDWK9CqsukKCC, company=IRhDANKMhU16iF8XV6Kx, email=x0tn5ZVrONM7CZIIPNWx, phone=mtFcf75AH8e6ustp3FPF, address=mACGsZfF4P10Ul6W8QKX, about=IeZhZwbq1Oobb3T9BILi, registered=GKqryqFTQVZeA7ajZRm2, latitude=36.562117005616884, longitude=30.578460210624133, tags=[], friends=[], greeting=LGK1xJ8OstXNnaHDYvgl, favoriteFruit=alOZnd8i92UtpChHQjUd}]}
       Transformed: Users{users=[JsonDataObj{_id=14754479812597270941, index=1111845094, guid=3L5eIvlkmvtB51n4Iza1, isActive=true, balance=jrS2ljBYlufsc7QSLqGB, picture=gT9VtUYw7irLqv4100wv2mvM4xQYFDwecZXnZkWhCf00bm7ymM1B8ufR0bAb1ybiTZfUnTA3plEluTSqH1SAQuTN64XhgDbVG0mU, age=82, eyeColor=JdruGKlV4dvvBAIiJVpl, name=efSKcttqJGLD5VrzQC1g, gender=sC8I9u9LMZIIMwbYQs1B, company=lSIlIQi6decEDbiJ388c, email=dWlZIp0w1IaLuX1yGjjO, phone=fAvXgLhGDeNdZTKwQoBG, address=RqKNhD8XkTuVPhmNEvux, about=KdpViYvlajjKPluVyMU2, registered=3LtDylE8SAOEITSXszhH, latitude=38.703099672469115, longitude=173.30455785562415, tags=[xrER0814YS, Xnv5axtyJ7, gCevjqOMcR, Kbuu4bhvnz, nLyjxnEe8c, M7mLUcyfuJ, uDhXr3MQNi, tSiTTrcu7U, KJgAagtkQw, z4NTRz3Fko, NehDoFXH5L, gpJSFXyyxV, gv9AFCKPkI, kz5C4IGLCK, Ha1EXOxf12, bNj8JnAhJW, wbjn9IFAfI, irJPq033YX, hV7Z2EeNdv, z1vpklnGqI, TsUSLfXrsA, 5FsjFhKm7V, UMF31ypmRw, 0Z3ts8hnwQ, oeFs7a7w6g, tsTOSaQ2Wv, Yh5yyOulq9, dqmjztrVWG, 6L9znr7PSv, jlu2UJnl2j, ZnAFxcGiKP, LuPBEjJiye, l8z6VUxIh8], friends=[Friend{id=2358, name=plGQPiMCLVTPRjlQXvYKtOWHIroFEt}, Friend{id=6364, name=qjzlysxPKheMuEDVtiEYljBouNXkMu}, Friend{id=7956, name=OmJUormUqEOpzddXcjyJDzoJLcnbpN}, Friend{id=8128, name=aeLaaAWtSEuaFrxDriHjeJIIpgfwwL}, Friend{id=5093, name=qljtHhJOjiZClQLOkiHbQEiMrVbLDF}, Friend{id=7693, name=oHEqHrWuwfEDabizcmcdNrmkxNlkPx}, Friend{id=1894, name=TSXPxZuwradXIrrtKPHdrmIRCQyFoe}], greeting=2XkPztmZHl7byAJr5tYN, favoriteFruit=6xjusZGgsUkj3S69WYyN}, JsonDataObj{_id=10516416718220535624, index=1780620012, guid=AP1jYNakkUqociZrC0Hn, isActive=true, balance=rESTlYTyxDTlFdO5IpBr, picture=DzBMCexuvu1or0qj1O5RyNpupop1IhKh87seCIaGl2CMyiY3HPgtCdC7uKRdANFiXZyBQUZFzi6a8CzuLiTax1Pbvkpool7cTvuA, age=63, eyeColor=HRH5eyunDyeFTc02FeLv, name=E2XoAQMnZidQCOx0qonC, gender=ZO8S4b6eDWK9CqsukKCC, company=IRhDANKMhU16iF8XV6Kx, email=x0tn5ZVrONM7CZIIPNWx, phone=mtFcf75AH8e6ustp3FPF, address=mACGsZfF4P10Ul6W8QKX, about=IeZhZwbq1Oobb3T9BILi, registered=GKqryqFTQVZeA7ajZRm2, latitude=36.56211700561688, longitude=30.578460210624133, tags=[], friends=[], greeting=LGK1xJ8OstXNnaHDYvgl, favoriteFruit=alOZnd8i92UtpChHQjUd}]}
zapov commented

Then it would be better to use double compare with a small error range. I think it's acceptable to use lossy double conversion, but not really using double with 6 digits only

btw. last version of dsljson can explicitly specify double conversion type... and the fastest one is still really precise

I agree. Just wanted to share that some libs deserialize doubles incorrectly.
4257592 Done

btw. last version of dsljson can explicitly specify double conversion type... and the fastest one is still really precise

Cool, I'll keep that in mind next time I upgrade libs in the project.