Jmh

Current raw JMH results (higher score is better)

Run on a mid-2015 15” Macbook Pro. 2.8 GHz Intel Core i7, 16 GB 1600 MHz DDR3

Raw

Benchmark                                             (minified)   Mode  Cnt     Score    Error  Units
JmhBenchmark.gson_autovalue_buffer_fromJson                 true  thrpt   25  1525.482 ± 42.836  ops/s
JmhBenchmark.gson_autovalue_buffer_fromJson                false  thrpt   25  1409.158 ±  8.407  ops/s
JmhBenchmark.gson_autovalue_buffer_toJson                   true  thrpt   25   754.222 ± 15.435  ops/s
JmhBenchmark.gson_autovalue_buffer_toJson                  false  thrpt   25   760.290 ±  9.819  ops/s
JmhBenchmark.gson_autovalue_string_fromJson                 true  thrpt   25  1781.907 ± 22.567  ops/s
JmhBenchmark.gson_autovalue_string_fromJson                false  thrpt   25  1593.688 ± 48.073  ops/s
JmhBenchmark.gson_autovalue_string_toJson                   true  thrpt   25  1665.459 ± 91.108  ops/s
JmhBenchmark.gson_autovalue_string_toJson                  false  thrpt   25  1746.740 ± 13.886  ops/s
JmhBenchmark.gson_reflective_string_fromJson                true  thrpt   25  1886.678 ± 69.660  ops/s
JmhBenchmark.gson_reflective_string_fromJson               false  thrpt   25  1767.980 ± 15.606  ops/s
JmhBenchmark.gson_reflective_string_toJson                  true  thrpt   25  1321.148 ± 40.046  ops/s
JmhBenchmark.gson_reflective_string_toJson                 false  thrpt   25  1356.219 ± 34.235  ops/s
JmhBenchmark.kserializer_string_fromJson                    true  thrpt   25  1560.665 ± 21.197  ops/s
JmhBenchmark.kserializer_string_fromJson                   false  thrpt   25  1431.960 ± 22.652  ops/s
JmhBenchmark.kserializer_string_toJson                      true  thrpt   25  1387.467 ± 40.396  ops/s
JmhBenchmark.kserializer_string_toJson                     false  thrpt   25  1346.139 ± 16.223  ops/s
JmhBenchmark.moshi_autovalue_buffer_fromJson                true  thrpt   25  1599.001 ± 18.123  ops/s
JmhBenchmark.moshi_autovalue_buffer_fromJson               false  thrpt   25  1083.885 ± 25.161  ops/s
JmhBenchmark.moshi_autovalue_buffer_toJson                  true  thrpt   25  1765.929 ± 16.492  ops/s
JmhBenchmark.moshi_autovalue_buffer_toJson                 false  thrpt   25  1713.932 ± 43.726  ops/s
JmhBenchmark.moshi_autovalue_string_fromJson                true  thrpt   25  1403.610 ± 33.427  ops/s
JmhBenchmark.moshi_autovalue_string_fromJson               false  thrpt   25   993.052 ± 30.950  ops/s
JmhBenchmark.moshi_autovalue_string_toJson                  true  thrpt   25  1502.739 ±  6.458  ops/s
JmhBenchmark.moshi_autovalue_string_toJson                 false  thrpt   25  1480.423 ± 28.656  ops/s
JmhBenchmark.moshi_kotlin_codegen_buffer_fromJson           true  thrpt   25  1589.254 ± 11.012  ops/s
JmhBenchmark.moshi_kotlin_codegen_buffer_fromJson          false  thrpt   25  1070.076 ± 11.175  ops/s
JmhBenchmark.moshi_kotlin_codegen_buffer_toJson             true  thrpt   25  1857.140 ± 82.876  ops/s
JmhBenchmark.moshi_kotlin_codegen_buffer_toJson            false  thrpt   25  1751.169 ± 96.660  ops/s
JmhBenchmark.moshi_kotlin_codegen_string_fromJson           true  thrpt   25  1413.896 ± 26.525  ops/s
JmhBenchmark.moshi_kotlin_codegen_string_fromJson          false  thrpt   25   960.448 ± 23.985  ops/s
JmhBenchmark.moshi_kotlin_codegen_string_toJson             true  thrpt   25  1680.681 ± 70.284  ops/s
JmhBenchmark.moshi_kotlin_codegen_string_toJson            false  thrpt   25  1493.409 ± 17.646  ops/s
JmhBenchmark.moshi_kotlin_reflective_buffer_fromJson        true  thrpt   25  1371.793 ± 12.505  ops/s
JmhBenchmark.moshi_kotlin_reflective_buffer_fromJson       false  thrpt   25   966.614 ± 13.090  ops/s
JmhBenchmark.moshi_kotlin_reflective_buffer_toJson          true  thrpt   25  1560.115 ± 54.810  ops/s
JmhBenchmark.moshi_kotlin_reflective_buffer_toJson         false  thrpt   25  1579.324 ± 74.541  ops/s
JmhBenchmark.moshi_kotlin_reflective_string_fromJson        true  thrpt   25  1250.486 ± 17.789  ops/s
JmhBenchmark.moshi_kotlin_reflective_string_fromJson       false  thrpt   25   874.268 ± 15.619  ops/s
JmhBenchmark.moshi_kotlin_reflective_string_toJson          true  thrpt   25  1291.330 ± 12.340  ops/s
JmhBenchmark.moshi_kotlin_reflective_string_toJson         false  thrpt   25  1319.377 ± 39.128  ops/s
JmhBenchmark.moshi_reflective_string_fromJson               true  thrpt   25  1373.449 ±  5.726  ops/s
JmhBenchmark.moshi_reflective_string_fromJson              false  thrpt   25   932.438 ± 16.473  ops/s
JmhBenchmark.moshi_reflective_string_toJson                 true  thrpt   25  1441.979 ± 11.832  ops/s
JmhBenchmark.moshi_reflective_string_toJson                false  thrpt   25  1503.545 ± 63.463  ops/s

Grouped by serialization type (read, write, buffered, string):

Read (buffered)
JmhBenchmark.moshi_autovalue_buffer_fromJson[minified=true]           thrpt  25  1599.001  ±  18.123  ops/s
JmhBenchmark.moshi_kotlin_codegen_buffer_fromJson[minified=true]      thrpt  25  1589.254  ±  11.012  ops/s
JmhBenchmark.gson_autovalue_buffer_fromJson[minified=true]            thrpt  25  1525.482  ±  42.836  ops/s
JmhBenchmark.gson_autovalue_buffer_fromJson[minified=false]           thrpt  25  1409.158  ±   8.407  ops/s
JmhBenchmark.moshi_kotlin_reflective_buffer_fromJson[minified=true]   thrpt  25  1371.793  ±  12.505  ops/s
JmhBenchmark.moshi_autovalue_buffer_fromJson[minified=false]          thrpt  25  1083.885  ±  25.161  ops/s
JmhBenchmark.moshi_kotlin_codegen_buffer_fromJson[minified=false]     thrpt  25  1070.076  ±  11.175  ops/s
JmhBenchmark.moshi_kotlin_reflective_buffer_fromJson[minified=false]  thrpt  25   966.614  ±   13.09  ops/s

Read (string)
JmhBenchmark.gson_reflective_string_fromJson[minified=true]           thrpt  25  1886.678  ±   69.66  ops/s
JmhBenchmark.gson_autovalue_string_fromJson[minified=true]            thrpt  25  1781.907  ±  22.567  ops/s
JmhBenchmark.gson_reflective_string_fromJson[minified=false]          thrpt  25   1767.98  ±  15.606  ops/s
JmhBenchmark.gson_autovalue_string_fromJson[minified=false]           thrpt  25  1593.688  ±  48.073  ops/s
JmhBenchmark.kserializer_string_fromJson[minified=true]               thrpt  25  1560.665  ±  21.197  ops/s
JmhBenchmark.kserializer_string_fromJson[minified=false]              thrpt  25   1431.96  ±  22.652  ops/s
JmhBenchmark.moshi_kotlin_codegen_string_fromJson[minified=true]      thrpt  25  1413.896  ±  26.525  ops/s
JmhBenchmark.moshi_autovalue_string_fromJson[minified=true]           thrpt  25   1403.61  ±  33.427  ops/s
JmhBenchmark.moshi_reflective_string_fromJson[minified=true]          thrpt  25  1373.449  ±   5.726  ops/s
JmhBenchmark.moshi_kotlin_reflective_string_fromJson[minified=true]   thrpt  25  1250.486  ±  17.789  ops/s
JmhBenchmark.moshi_autovalue_string_fromJson[minified=false]          thrpt  25   993.052  ±   30.95  ops/s
JmhBenchmark.moshi_kotlin_codegen_string_fromJson[minified=false]     thrpt  25   960.448  ±  23.985  ops/s
JmhBenchmark.moshi_reflective_string_fromJson[minified=false]         thrpt  25   932.438  ±  16.473  ops/s
JmhBenchmark.moshi_kotlin_reflective_string_fromJson[minified=false]  thrpt  25   874.268  ±  15.619  ops/s

Write (buffered)
JmhBenchmark.moshi_kotlin_codegen_buffer_toJson[minified=true]        thrpt  25   1857.14  ±  82.876  ops/s
JmhBenchmark.moshi_autovalue_buffer_toJson[minified=true]             thrpt  25  1765.929  ±  16.492  ops/s
JmhBenchmark.moshi_kotlin_reflective_buffer_toJson[minified=true]     thrpt  25  1560.115  ±   54.81  ops/s
JmhBenchmark.gson_autovalue_buffer_toJson[minified=true]              thrpt  25   754.222  ±  15.435  ops/s

Write (string)
JmhBenchmark.moshi_kotlin_codegen_string_toJson[minified=true]        thrpt  25  1680.681  ±  70.284  ops/s
JmhBenchmark.gson_autovalue_string_toJson[minified=true]              thrpt  25  1665.459  ±  91.108  ops/s
JmhBenchmark.moshi_autovalue_string_toJson[minified=true]             thrpt  25  1502.739  ±   6.458  ops/s
JmhBenchmark.moshi_reflective_string_toJson[minified=true]            thrpt  25  1441.979  ±  11.832  ops/s
JmhBenchmark.kserializer_string_toJson[minified=true]                 thrpt  25  1387.467  ±  40.396  ops/s
JmhBenchmark.gson_reflective_string_toJson[minified=true]             thrpt  25  1321.148  ±  40.046  ops/s
JmhBenchmark.moshi_kotlin_reflective_string_toJson[minified=true]     thrpt  25   1291.33  ±   12.34  ops/s

Grouped by library (interesting to see how reflection vs custom adapters affects perf within a library):

GSON
JmhBenchmark.gson_reflective_string_fromJson[minified=true]           thrpt  25  1886.678  ±   69.66  ops/s
JmhBenchmark.gson_autovalue_string_fromJson[minified=true]            thrpt  25  1781.907  ±  22.567  ops/s
JmhBenchmark.gson_reflective_string_fromJson[minified=false]          thrpt  25   1767.98  ±  15.606  ops/s
JmhBenchmark.gson_autovalue_string_toJson[minified=true]              thrpt  25  1665.459  ±  91.108  ops/s
JmhBenchmark.gson_autovalue_string_fromJson[minified=false]           thrpt  25  1593.688  ±  48.073  ops/s
JmhBenchmark.gson_autovalue_buffer_fromJson[minified=true]            thrpt  25  1525.482  ±  42.836  ops/s
JmhBenchmark.gson_autovalue_buffer_fromJson[minified=false]           thrpt  25  1409.158  ±   8.407  ops/s
JmhBenchmark.gson_reflective_string_toJson[minified=true]             thrpt  25  1321.148  ±  40.046  ops/s
JmhBenchmark.gson_autovalue_buffer_toJson[minified=true]              thrpt  25   754.222  ±  15.435  ops/s

Kotlinx Serialization
JmhBenchmark.kserializer_string_fromJson[minified=true]               thrpt  25  1560.665  ±  21.197  ops/s
JmhBenchmark.kserializer_string_fromJson[minified=false]              thrpt  25   1431.96  ±  22.652  ops/s
JmhBenchmark.kserializer_string_toJson[minified=true]                 thrpt  25  1387.467  ±  40.396  ops/s

Moshi
JmhBenchmark.moshi_autovalue_buffer_toJson[minified=true]             thrpt  25  1765.929  ±  16.492  ops/s
JmhBenchmark.moshi_autovalue_buffer_fromJson[minified=true]           thrpt  25  1599.001  ±  18.123  ops/s
JmhBenchmark.moshi_autovalue_string_toJson[minified=true]             thrpt  25  1502.739  ±   6.458  ops/s
JmhBenchmark.moshi_reflective_string_toJson[minified=true]            thrpt  25  1441.979  ±  11.832  ops/s
JmhBenchmark.moshi_autovalue_string_fromJson[minified=true]           thrpt  25   1403.61  ±  33.427  ops/s
JmhBenchmark.moshi_reflective_string_fromJson[minified=true]          thrpt  25  1373.449  ±   5.726  ops/s
JmhBenchmark.moshi_autovalue_buffer_fromJson[minified=false]          thrpt  25  1083.885  ±  25.161  ops/s
JmhBenchmark.moshi_autovalue_string_fromJson[minified=false]          thrpt  25   993.052  ±   30.95  ops/s
JmhBenchmark.moshi_reflective_string_fromJson[minified=false]         thrpt  25   932.438  ±  16.473  ops/s

Moshi Kotlin
JmhBenchmark.moshi_kotlin_codegen_buffer_toJson[minified=true]        thrpt  25   1857.14  ±  82.876  ops/s
JmhBenchmark.moshi_kotlin_codegen_string_toJson[minified=true]        thrpt  25  1680.681  ±  70.284  ops/s
JmhBenchmark.moshi_kotlin_codegen_buffer_fromJson[minified=true]      thrpt  25  1589.254  ±  11.012  ops/s
JmhBenchmark.moshi_kotlin_reflective_buffer_toJson[minified=true]     thrpt  25  1560.115  ±   54.81  ops/s
JmhBenchmark.moshi_kotlin_codegen_string_fromJson[minified=true]      thrpt  25  1413.896  ±  26.525  ops/s
JmhBenchmark.moshi_kotlin_reflective_buffer_fromJson[minified=true]   thrpt  25  1371.793  ±  12.505  ops/s
JmhBenchmark.moshi_kotlin_reflective_string_toJson[minified=true]     thrpt  25   1291.33  ±   12.34  ops/s
JmhBenchmark.moshi_kotlin_reflective_string_fromJson[minified=true]   thrpt  25  1250.486  ±  17.789  ops/s
JmhBenchmark.moshi_kotlin_codegen_buffer_fromJson[minified=false]     thrpt  25  1070.076  ±  11.175  ops/s
JmhBenchmark.moshi_kotlin_reflective_buffer_fromJson[minified=false]  thrpt  25   966.614  ±   13.09  ops/s
JmhBenchmark.moshi_kotlin_codegen_string_fromJson[minified=false]     thrpt  25   960.448  ±  23.985  ops/s
JmhBenchmark.moshi_kotlin_reflective_string_fromJson[minified=false]  thrpt  25   874.268  ±  15.619  ops/s