Android
Current raw Android polymorphic benchmark results (lower score is better)¶
Run on a 15” 2018 MacBook Pro. 32GB RAM, 2.9 GHz 6-Core Intel Core i9
Grouped by serialization type (read, write, buffered, string):
Read (buffered) AndroidBenchmark.moshi_autovalue_buffer_fromJson[minified=true] 5,705,469 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_fromJson[minified=true] 5,735,052 ns AndroidBenchmark.gson_autovalue_buffer_fromJson[minified=true] 6,195,417 ns AndroidBenchmark.gson_autovalue_buffer_fromJson[minified=false] 7,027,032 ns AndroidBenchmark.moshi_autovalue_buffer_fromJson[minified=false] 7,641,979 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_fromJson[minified=false] 7,740,677 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_fromJson[minified=true] 8,100,000 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_fromJson[minified=false] 10,143,074 ns Read (string) AndroidBenchmark.gson_autovalue_string_fromJson[minified=true] 4,854,687 ns AndroidBenchmark.gson_autovalue_string_fromJson[minified=false] 5,340,678 ns AndroidBenchmark.gson_reflective_string_fromJson[minified=true] 5,678,593 ns AndroidBenchmark.kserializer_string_fromJson[minified=true] 5,772,345 ns AndroidBenchmark.gson_reflective_string_fromJson[minified=false] 6,346,979 ns AndroidBenchmark.kserializer_string_fromJson[minified=false] 6,430,939 ns AndroidBenchmark.moshi_autovalue_string_fromJson[minified=true] 6,669,532 ns AndroidBenchmark.moshi_kotlin_codegen_string_fromJson[minified=true] 6,673,698 ns AndroidBenchmark.moshi_reflective_string_fromJson[minified=true] 8,197,866 ns AndroidBenchmark.moshi_autovalue_string_fromJson[minified=false] 8,940,730 ns AndroidBenchmark.moshi_kotlin_codegen_string_fromJson[minified=false] 8,981,979 ns AndroidBenchmark.moshi_kotlin_reflective_string_fromJson[minified=true] 9,024,428 ns AndroidBenchmark.moshi_reflective_string_fromJson[minified=false] 10,500,313 ns AndroidBenchmark.moshi_kotlin_reflective_string_fromJson[minified=false] 11,272,241 ns Write (buffered) AndroidBenchmark.moshi_autovalue_buffer_toJson[minified=true] 3,760,470 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_toJson[minified=true] 3,825,365 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_toJson[minified=true] 7,219,272 ns AndroidBenchmark.gson_autovalue_buffer_toJson[minified=true] 160,393,974 ns Write (string) AndroidBenchmark.kserializer_string_toJson[minified=true] 5,368,125 ns AndroidBenchmark.moshi_autovalue_string_toJson[minified=true] 5,413,751 ns AndroidBenchmark.moshi_kotlin_codegen_string_toJson[minified=true] 5,442,292 ns AndroidBenchmark.gson_autovalue_string_toJson[minified=true] 6,162,865 ns AndroidBenchmark.moshi_reflective_string_toJson[minified=true] 6,316,824 ns AndroidBenchmark.gson_reflective_string_toJson[minified=true] 7,916,772 ns AndroidBenchmark.moshi_kotlin_reflective_string_toJson[minified=true] 8,733,439 ns
Grouped by library (interesting to see how reflection vs custom adapters affects perf within a library):
GSON AndroidBenchmark.gson_autovalue_string_fromJson[minified=true] 4,854,687 ns AndroidBenchmark.gson_autovalue_string_fromJson[minified=false] 5,340,678 ns AndroidBenchmark.gson_reflective_string_fromJson[minified=true] 5,678,593 ns AndroidBenchmark.gson_autovalue_string_toJson[minified=true] 6,162,865 ns AndroidBenchmark.gson_autovalue_buffer_fromJson[minified=true] 6,195,417 ns AndroidBenchmark.gson_reflective_string_fromJson[minified=false] 6,346,979 ns AndroidBenchmark.gson_autovalue_buffer_fromJson[minified=false] 7,027,032 ns AndroidBenchmark.gson_reflective_string_toJson[minified=true] 7,916,772 ns AndroidBenchmark.gson_autovalue_buffer_toJson[minified=true] 160,393,974 ns Kotlinx Serialization AndroidBenchmark.kserializer_string_toJson[minified=true] 5,368,125 ns AndroidBenchmark.kserializer_string_fromJson[minified=true] 5,772,345 ns AndroidBenchmark.kserializer_string_fromJson[minified=false] 6,430,939 ns Moshi AndroidBenchmark.moshi_autovalue_buffer_toJson[minified=true] 3,760,470 ns AndroidBenchmark.moshi_autovalue_string_toJson[minified=true] 5,413,751 ns AndroidBenchmark.moshi_autovalue_buffer_fromJson[minified=true] 5,705,469 ns AndroidBenchmark.moshi_reflective_string_toJson[minified=true] 6,316,824 ns AndroidBenchmark.moshi_autovalue_string_fromJson[minified=true] 6,669,532 ns AndroidBenchmark.moshi_autovalue_buffer_fromJson[minified=false] 7,641,979 ns AndroidBenchmark.moshi_reflective_string_fromJson[minified=true] 8,197,866 ns AndroidBenchmark.moshi_autovalue_string_fromJson[minified=false] 8,940,730 ns AndroidBenchmark.moshi_reflective_string_fromJson[minified=false] 10,500,313 ns Moshi Kotlin AndroidBenchmark.moshi_kotlin_codegen_buffer_toJson[minified=true] 3,825,365 ns AndroidBenchmark.moshi_kotlin_codegen_string_toJson[minified=true] 5,442,292 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_fromJson[minified=true] 5,735,052 ns AndroidBenchmark.moshi_kotlin_codegen_string_fromJson[minified=true] 6,673,698 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_toJson[minified=true] 7,219,272 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_fromJson[minified=false] 7,740,677 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_fromJson[minified=true] 8,100,000 ns AndroidBenchmark.moshi_kotlin_reflective_string_toJson[minified=true] 8,733,439 ns AndroidBenchmark.moshi_kotlin_codegen_string_fromJson[minified=false] 8,981,979 ns AndroidBenchmark.moshi_kotlin_reflective_string_fromJson[minified=true] 9,024,428 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_fromJson[minified=false] 10,143,074 ns AndroidBenchmark.moshi_kotlin_reflective_string_fromJson[minified=false] 11,272,241 ns