Skip to content

Latest commit

 

History

History
executable file
·
76 lines (66 loc) · 2.86 KB

README.md

File metadata and controls

executable file
·
76 lines (66 loc) · 2.86 KB

A Scala JSON serialization/deserialization benchmark

Introduction

When decision about JSON library should be made because of performance, this benchmark can be helpful. Benchmarked libraries:

This project also demonstrates how to use these different JSON libraries to serialize/deserialize a Scala case class.

Benchmark

Dataset and types (Bird and Place) are from this repo: scala-json-benchmark. For benchmark used jmh via sbt-jmh plugin. File birds.data contains 25000 lines. Each of line is serialized json of Bird.

Results

MacBook Pro (Retina, 13-inch, Early 2015):

  • OS: macOS Sierra 10.12.6
  • CPU: Intel Core i7 3.1 GHz
  • Memory: 16 GB
  • JVM: Java HotSpot(TM) 64-Bit Server VM, 25.181-b13
Serialization
Library Time, ms
jsoniter 50.113
circe 140.868
spray 165.045
lift 206.377
play-json 261.774
Argonaut 306.668
json4s 385.766
Deserialization
Library Time, ms
jsoniter 78.070
circe 130.938
spray 180.159
lift 220.421
Argonaut 319.450
play-json 357.515
json4s 467.872

Desktop machine:

  • OS: Microsoft Windows 10 Pro N x64 [Version 10.0.17134.590]
  • CPU: AMD Ryzen 7 2700X Eight-Core Processor i7 3.7 GHz
  • Memory: DDR4-3200 GHz 16 GB
  • JVM: Java HotSpot(TM) 64-Bit Server VM, 25.201-b09
Serialization
Library Time, ms
jsoniter 41.140
circe 104.434
spray 132.525
lift 171.015
play-json 215.128
Argonaut 255.371
json4s 310.488
Deserialization
Library Time, ms
jsoniter 68.833
circe 117.592
spray 155.961
lift 220.304
Argonaut 264.283
play-json 342.450
json4s 403.946