Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add jackson benchmarks #18

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

Add jackson benchmarks #18

wants to merge 3 commits into from

Conversation

jzbrooks
Copy link

@jzbrooks jzbrooks commented Mar 8, 2023

Resolves #17

@jzbrooks
Copy link
Author

jzbrooks commented Mar 9, 2023

Results

The benchmarks ran on an emulator (which might be less than ideal, but I don't have a rooted device such that microbenchmark can lock cpu freq) on a MacBook Pro (16-inch, 2019) / 2.6 GHz 6-Core Intel Core i7 / 32 GB 2667 MHz DDR4

    3,780,714 ns AndroidBenchmark.jackson_buffer_toJson[minified=true]
    5,937,129 ns AndroidBenchmark.jackson_kotlin_buffer_toJson[minified=true]
    3,782,060 ns AndroidBenchmark.jackson_string_toJson[minified=true]
    1,891,089 ns AndroidBenchmark.jackson_buffer_fromJson[minified=true]
    5,432,586 ns AndroidBenchmark.jackson_kotlin_string_toJson[minified=true]
    4,092,667 ns AndroidBenchmark.jackson_kotlin_buffer_fromJson[minified=true]
    1,702,849 ns AndroidBenchmark.jackson_string_fromJson[minified=true]
    3,549,857 ns AndroidBenchmark.jackson_kotlin_string_fromJson[minified=true]
    3,471,514 ns AndroidBenchmark.jackson_buffer_toJson[minified=false]
    5,298,514 ns AndroidBenchmark.jackson_kotlin_buffer_toJson[minified=false]
    3,362,756 ns AndroidBenchmark.jackson_string_toJson[minified=false]
    2,116,143 ns AndroidBenchmark.jackson_buffer_fromJson[minified=false]
    5,317,808 ns AndroidBenchmark.jackson_kotlin_string_toJson[minified=false]
    4,407,135 ns AndroidBenchmark.jackson_kotlin_buffer_fromJson[minified=false]
    2,260,745 ns AndroidBenchmark.jackson_string_fromJson[minified=false]
    3,945,124 ns AndroidBenchmark.jackson_kotlin_string_fromJson[minified=false]
Full Result Set
    1,994,053 ns AndroidBenchmark.gson_reflective_string_fromJson[minified=true]
    1,535,701 ns AndroidBenchmark.gson_autovalue_string_fromJson[minified=true]
    2,106,392 ns AndroidBenchmark.moshi_autovalue_buffer_fromJson[minified=true]
    1,762,855 ns AndroidBenchmark.moshi_autovalue_string_toJson[minified=true]
    2,347,367 ns AndroidBenchmark.moshi_autovalue_string_fromJson[minified=true]
    3,780,714 ns AndroidBenchmark.jackson_buffer_toJson[minified=true]
   34,711,139 ns AndroidBenchmark.gson_autovalue_buffer_toJson[minified=true]
    2,104,227 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_fromJson[minified=true]
    3,037,378 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_fromJson[minified=true]
    1,263,595 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_toJson[minified=true]
    2,335,807 ns AndroidBenchmark.moshi_kotlin_codegen_string_fromJson[minified=true]
    5,937,129 ns AndroidBenchmark.jackson_kotlin_buffer_toJson[minified=true]
    3,218,318 ns AndroidBenchmark.moshi_kotlin_reflective_string_fromJson[minified=true]
    2,216,778 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_toJson[minified=true]
    2,164,819 ns AndroidBenchmark.kserializer_string_fromJson[minified=true]
    3,782,060 ns AndroidBenchmark.jackson_string_toJson[minified=true]
    3,080,469 ns AndroidBenchmark.gson_autovalue_string_toJson[minified=true]
    1,978,509 ns AndroidBenchmark.moshi_reflective_string_toJson[minified=true]
    1,744,364 ns AndroidBenchmark.moshi_kotlin_codegen_string_toJson[minified=true]
    2,099,764 ns AndroidBenchmark.kserializer_string_toJson[minified=true]
    3,788,587 ns AndroidBenchmark.gson_reflective_string_toJson[minified=true]
    1,221,013 ns AndroidBenchmark.moshi_autovalue_buffer_toJson[minified=true]
Timed out waiting for process (dev.zacsweers.jsonserialization.android.test) to appear on Thekla [emulator-5554].
    2,731,075 ns AndroidBenchmark.moshi_reflective_string_fromJson[minified=true]
    1,891,089 ns AndroidBenchmark.jackson_buffer_fromJson[minified=true]
    5,432,586 ns AndroidBenchmark.jackson_kotlin_string_toJson[minified=true]
    4,092,667 ns AndroidBenchmark.jackson_kotlin_buffer_fromJson[minified=true]
    1,702,849 ns AndroidBenchmark.jackson_string_fromJson[minified=true]
    2,717,578 ns AndroidBenchmark.moshi_kotlin_reflective_string_toJson[minified=true]
    3,549,857 ns AndroidBenchmark.jackson_kotlin_string_fromJson[minified=true]
    2,010,287 ns AndroidBenchmark.gson_autovalue_buffer_fromJson[minified=true]
    2,085,709 ns AndroidBenchmark.gson_reflective_string_fromJson[minified=false]
    1,643,141 ns AndroidBenchmark.gson_autovalue_string_fromJson[minified=false]
    2,684,480 ns AndroidBenchmark.moshi_autovalue_buffer_fromJson[minified=false]
    1,741,285 ns AndroidBenchmark.moshi_autovalue_string_toJson[minified=false]
    2,951,020 ns AndroidBenchmark.moshi_autovalue_string_fromJson[minified=false]
    3,471,514 ns AndroidBenchmark.jackson_buffer_toJson[minified=false]
   31,882,056 ns AndroidBenchmark.gson_autovalue_buffer_toJson[minified=false]
    2,735,238 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_fromJson[minified=false]
    3,555,916 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_fromJson[minified=false]
    1,184,090 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_toJson[minified=false]
    3,021,006 ns AndroidBenchmark.moshi_kotlin_codegen_string_fromJson[minified=false]
    5,298,514 ns AndroidBenchmark.jackson_kotlin_buffer_toJson[minified=false]
    3,866,866 ns AndroidBenchmark.moshi_kotlin_reflective_string_fromJson[minified=false]
    2,150,292 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_toJson[minified=false]
    2,143,342 ns AndroidBenchmark.kserializer_string_fromJson[minified=false]
    3,362,756 ns AndroidBenchmark.jackson_string_toJson[minified=false]
    3,029,687 ns AndroidBenchmark.gson_autovalue_string_toJson[minified=false]
    1,970,959 ns AndroidBenchmark.moshi_reflective_string_toJson[minified=false]
    1,751,465 ns AndroidBenchmark.moshi_kotlin_codegen_string_toJson[minified=false]
    2,187,586 ns AndroidBenchmark.kserializer_string_toJson[minified=false]
    3,750,312 ns AndroidBenchmark.gson_reflective_string_toJson[minified=false]
    1,198,145 ns AndroidBenchmark.moshi_autovalue_buffer_toJson[minified=false]
    4,890,404 ns AndroidBenchmark.moshi_reflective_string_fromJson[minified=false]
    2,116,143 ns AndroidBenchmark.jackson_buffer_fromJson[minified=false]
    5,317,808 ns AndroidBenchmark.jackson_kotlin_string_toJson[minified=false]
    4,407,135 ns AndroidBenchmark.jackson_kotlin_buffer_fromJson[minified=false]
    2,260,745 ns AndroidBenchmark.jackson_string_fromJson[minified=false]
    2,764,794 ns AndroidBenchmark.moshi_kotlin_reflective_string_toJson[minified=false]
    3,945,124 ns AndroidBenchmark.jackson_kotlin_string_fromJson[minified=false]
    2,285,186 ns AndroidBenchmark.gson_autovalue_buffer_fromJson[minified=false]

@jzbrooks
Copy link
Author

jzbrooks commented Mar 9, 2023

Here are results on a non-root, charging Pixel 3 (Android-12).

The discrepancy between Jackson on a real device v emulator is interesting. The rest of the benchmarks didn't seem to be proportionally impacted as much.

Full Result Set
    5,140,105 ns AndroidBenchmark.gson_reflective_string_fromJson[minified=true]
    4,365,156 ns AndroidBenchmark.gson_autovalue_string_fromJson[minified=true]
    5,875,158 ns AndroidBenchmark.moshi_autovalue_buffer_fromJson[minified=true]
    5,476,719 ns AndroidBenchmark.moshi_autovalue_string_toJson[minified=true]
    6,808,386 ns AndroidBenchmark.moshi_autovalue_string_fromJson[minified=true]
   11,454,793 ns AndroidBenchmark.jackson_buffer_toJson[minified=true]
  135,394,754 ns AndroidBenchmark.gson_autovalue_buffer_toJson[minified=true]
    6,022,031 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_fromJson[minified=true]
    7,483,907 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_fromJson[minified=true]
    4,149,116 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_toJson[minified=true]
    7,005,782 ns AndroidBenchmark.moshi_kotlin_codegen_string_fromJson[minified=true]
   17,243,439 ns AndroidBenchmark.jackson_kotlin_buffer_toJson[minified=true]
    8,432,917 ns AndroidBenchmark.moshi_kotlin_reflective_string_fromJson[minified=true]
    6,313,387 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_toJson[minified=true]
    5,300,157 ns AndroidBenchmark.kserializer_string_fromJson[minified=true]
    9,869,115 ns AndroidBenchmark.jackson_string_toJson[minified=true]
    7,925,522 ns AndroidBenchmark.gson_autovalue_string_toJson[minified=true]
    5,814,479 ns AndroidBenchmark.moshi_reflective_string_toJson[minified=true]
    5,507,397 ns AndroidBenchmark.moshi_kotlin_codegen_string_toJson[minified=true]
    6,049,688 ns AndroidBenchmark.kserializer_string_toJson[minified=true]
    9,154,793 ns AndroidBenchmark.gson_reflective_string_toJson[minified=true]
    4,007,917 ns AndroidBenchmark.moshi_autovalue_buffer_toJson[minified=true]
    7,756,199 ns AndroidBenchmark.moshi_reflective_string_fromJson[minified=true]
Timed out waiting for process (dev.zacsweers.jsonserialization.android.test) to appear on google-pixel_3-89WX0J818.
    5,478,490 ns AndroidBenchmark.jackson_buffer_fromJson[minified=true]
   15,323,022 ns AndroidBenchmark.jackson_kotlin_string_toJson[minified=true]
    9,205,106 ns AndroidBenchmark.jackson_kotlin_buffer_fromJson[minified=true]
    4,249,636 ns AndroidBenchmark.jackson_string_fromJson[minified=true]
    7,741,354 ns AndroidBenchmark.moshi_kotlin_reflective_string_toJson[minified=true]
    7,978,177 ns AndroidBenchmark.jackson_kotlin_string_fromJson[minified=true]
    5,906,511 ns AndroidBenchmark.gson_autovalue_buffer_fromJson[minified=true]
    5,743,386 ns AndroidBenchmark.gson_reflective_string_fromJson[minified=false]
    4,818,647 ns AndroidBenchmark.gson_autovalue_string_fromJson[minified=false]
    7,954,168 ns AndroidBenchmark.moshi_autovalue_buffer_fromJson[minified=false]
    5,450,001 ns AndroidBenchmark.moshi_autovalue_string_toJson[minified=false]
    9,393,335 ns AndroidBenchmark.moshi_autovalue_string_fromJson[minified=false]
   10,073,544 ns AndroidBenchmark.jackson_buffer_toJson[minified=false]
  135,032,357 ns AndroidBenchmark.gson_autovalue_buffer_toJson[minified=false]
    8,091,615 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_fromJson[minified=false]
    9,587,865 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_fromJson[minified=false]
    4,024,012 ns AndroidBenchmark.moshi_kotlin_codegen_buffer_toJson[minified=false]
    9,467,136 ns AndroidBenchmark.moshi_kotlin_codegen_string_fromJson[minified=false]
   15,697,814 ns AndroidBenchmark.jackson_kotlin_buffer_toJson[minified=false]
   10,957,814 ns AndroidBenchmark.moshi_kotlin_reflective_string_fromJson[minified=false]
    6,399,532 ns AndroidBenchmark.moshi_kotlin_reflective_buffer_toJson[minified=false]
    6,012,397 ns AndroidBenchmark.kserializer_string_fromJson[minified=false]
    9,168,177 ns AndroidBenchmark.jackson_string_toJson[minified=false]
    7,953,074 ns AndroidBenchmark.gson_autovalue_string_toJson[minified=false]
    5,851,928 ns AndroidBenchmark.moshi_reflective_string_toJson[minified=false]
    5,428,802 ns AndroidBenchmark.moshi_kotlin_codegen_string_toJson[minified=false]
    6,080,574 ns AndroidBenchmark.kserializer_string_toJson[minified=false]
    9,179,793 ns AndroidBenchmark.gson_reflective_string_toJson[minified=false]
    3,945,521 ns AndroidBenchmark.moshi_autovalue_buffer_toJson[minified=false]
   10,199,011 ns AndroidBenchmark.moshi_reflective_string_fromJson[minified=false]
    6,353,700 ns AndroidBenchmark.jackson_buffer_fromJson[minified=false]
   14,057,918 ns AndroidBenchmark.jackson_kotlin_string_toJson[minified=false]
   10,350,626 ns AndroidBenchmark.jackson_kotlin_buffer_fromJson[minified=false]
    4,884,428 ns AndroidBenchmark.jackson_string_fromJson[minified=false]
    7,904,584 ns AndroidBenchmark.moshi_kotlin_reflective_string_toJson[minified=false]
    8,568,751 ns AndroidBenchmark.jackson_kotlin_string_fromJson[minified=false]
    6,683,281 ns AndroidBenchmark.gson_autovalue_buffer_fromJson[minified=false]

@jzbrooks jzbrooks marked this pull request as ready for review August 16, 2024 00:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add jackson benchmarks
1 participant