8000 Implement `Serialize` and `Deserialize` on `Rope` by noib3 · Pull Request #27 · nomad/crop · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Implement Serialize and Deserialize on Rope #27

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

Merged
merged 7 commits into from
Apr 25, 2025
Merged

Implement Serialize and Deserialize on Rope #27

merged 7 commits into from
Apr 25, 2025

Conversation

noib3
Copy link
Collaborator
@noib3 noib3 commented Apr 25, 2025

Closes #26.

(De)serialize to/from strings

serde_json/ser/tiny:   1.1402 µs
serde_json/ser/small:  1.8021 µs
serde_json/ser/medium: 160.98 µs
serde_json/ser/large:  1.1537 ms

serde_json/de/tiny:    1.5186 µs
serde_json/de/small:   2.1216 µs
serde_json/de/medium:  230.88 µs
serde_json/de/large:   1.7968 ms

(De)serialize to/from chunks

serde_json/ser/tiny:   835.79 ns
serde_json/ser/small:  1.5530 µs
serde_json/ser/medium: 151.15 µs
serde_json/ser/large:  1.0774 ms

serde_json/de/tiny:    1.6713 µs
serde_json/de/small:   2.2025 µs
serde_json/de/medium:  227.74 µs
serde_json/de/large:   1.5861 ms

Overall, (de)serializing via chunks seems to be +5 to +35% faster when serializing, and -10 to +13% faster when deserializing compared to (de)serializing via strings.

@noib3 noib3 marked this pull request as ready for review April 25, 2025 11:54
@kntng
Copy link
Contributor
kntng commented Apr 25, 2025

Just leaving this here for another bench to reference. Serializing/deserializing from chunks is indeed faster.

Chunks

serde_json/ser/tiny     time:   [359.93 ns 363.11 ns 366.37 ns]
serde_json/ser/small    time:   [889.22 ns 894.53 ns 900.22 ns]
serde_json/ser/medium   time:   [108.41 µs 108.48 µs 108.56 µs]
serde_json/ser/large    time:   [787.00 µs 789.59 µs 792.97 µs]

serde_json/de/tiny      time:   [744.04 ns 779.71 ns 807.79 ns]
serde_json/de/small     time:   [793.78 ns 824.92 ns 853.33 ns]
serde_json/de/medium    time:   [72.815 µs 74.136 µs 75.722 µs]
serde_json/de/large     time:   [543.32 µs 548.83 µs 556.34 µs]

String

serde_json/ser/tiny     time:   [434.25 ns 436.19 ns 438.58 ns]
                        change: [+13.449% +17.350% +21.146%] (p = 0.00 < 0.05)
                        Performance has regressed.
serde_json/ser/small    time:   [1.1229 µs 1.1757 µs 1.2402 µs]
                        change: [+25.278% +30.351% +35.282%] (p = 0.00 < 0.05)
                        Performance has regressed.
serde_json/ser/medium   time:   [110.29 µs 110.44 µs 110.59 µs]
                        change: [+1.4940% +3.2314% +5.6296%] (p = 0.00 < 0.05)
                        Performance has regressed.

serde_json/ser/large    time:   [1.5297 ms 1.5386 ms 1.5474 ms]
                        change: [+95.500% +101.44% +109.02%] (p = 0.00 < 0.05)
                        Performance has regressed.
serde_json/de/tiny      time:   [825.47 ns 866.92 ns 899.99 ns]
                        change: [+5.7255% +25.766% +59.929%] (p = 0.05 < 0.05)
                        Performance has regressed.
serde_json/de/small     time:   [870.87 ns 892.43 ns 913.03 ns]
                        change: [+4.2393% +9.4152% +14.704%] (p = 0.00 < 0.05)
                        Performance has regressed.
serde_json/de/medium    time:   [69.709 µs 69.856 µs 70.031 µs]
                        change: [-32.476% +3.1184% +59.567%] (p = 0.91 > 0.05)
                        No change in performance detected.
serde_json/de/large     time:   [618.95 µs 626.14 µs 635.20 µs]
                        change: [-5.2374% +21.901% +60.171%] (p = 0.12 > 0.05)

@noib3 noib3 merged commit 4be3add into main Apr 25, 2025
8 checks passed
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.

Serializing and deserializing rope with serde
2 participants
0