dtolnay / erased-serde

Type-erased Serialize, Serializer and Deserializer traits
Apache License 2.0
709 stars 36 forks source link

Add serialization benchmark #99

Closed dtolnay closed 10 months ago

dtolnay commented 10 months ago

0.3.31:

test serialize_twitter_erased            ... bench:     802,487 ns/iter (+/- 11,307)
test serialize_twitter_monomorphized     ... bench:     474,801 ns/iter (+/- 7,682)
test twitter_to_json_value_erased        ... bench:   2,566,877 ns/iter (+/- 20,966)
test twitter_to_json_value_monomorphized ... bench:   1,830,965 ns/iter (+/- 28,052)

0.4.0-rc.1:

test serialize_twitter_erased            ... bench:     621,762 ns/iter (+/- 5,584)
test serialize_twitter_monomorphized     ... bench:     468,732 ns/iter (+/- 4,154)
test twitter_to_json_value_erased        ... bench:   2,149,379 ns/iter (+/- 16,055)
test twitter_to_json_value_monomorphized ... bench:   1,854,377 ns/iter (+/- 18,861)

The overhead for erased-serde vs monomorphized serde_json is 40%–69% in 0.3, and 16%–31% in 0.4. So the serializer refactor in 0.4 reduces overhead by over 2×.