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

refactor: decoder accept &[u8] as input #35

Merged
merged 2 commits into from
Dec 19, 2023

Conversation

forehalo
Copy link
Collaborator

No description provided.

Copy link

Benchmark for Linux

Click to view benchmark
Test Base PR %
codec/jwst decode var_int (32 bit) 213.0±0.64µs 213.3±1.63µs +0.14%
codec/jwst decode var_uint (32 bit) 178.2±0.46µs 178.5±2.72µs +0.17%
codec/jwst decode var_uint (64 bit) 182.6±15.38µs 180.4±0.88µs -1.20%
codec/jwst encode var_int (32 bit) 305.0±7.30µs 302.3±1.22µs -0.89%
codec/jwst encode var_uint (32 bit) 252.2±2.06µs 252.8±3.39µs +0.24%
codec/jwst encode var_uint (64 bit) 252.3±2.21µs 252.6±3.47µs +0.12%
codec/lib0 decode var_int (64 bit) 185.6±2.63µs 186.1±2.51µs +0.27%
codec/lib0 decode var_uint (32 bit) 160.1±11.98µs 155.0±2.50µs -3.19%
codec/lib0 decode var_uint (64 bit) 153.4±2.84µs 153.9±2.89µs +0.33%
codec/lib0 encode var_int (64 bit) 384.6±5.21µs 384.9±7.37µs +0.08%
codec/lib0 encode var_uint (32 bit) 375.7±14.91µs 373.0±1.00µs -0.72%
codec/lib0 encode var_uint (64 bit) 373.4±2.71µs 373.0±1.29µs -0.11%
ops/array/jwst/insert 109.9±0.33µs 105.9±0.85µs -3.64%
ops/array/jwst/insert range 159.6±0.36µs 156.7±0.43µs -1.82%
ops/array/jwst/remove 62.5±0.22µs 61.4±0.11µs -1.76%
ops/array/yrs/insert 58.2±0.55µs 51.8±0.38µs -11.00%
ops/array/yrs/insert range 75.1±0.41µs 74.8±0.36µs -0.40%
ops/array/yrs/remove 65.5±1.03µs 66.8±0.63µs +1.98%
ops/map/jwst/get 205.0±2.46ns 207.4±1.67ns +1.17%
ops/map/jwst/insert 2.9±0.03µs 2.9±0.01µs -0.00%
ops/map/jwst/remove 4.3±0.02µs 4.4±0.03µs +2.33%
ops/map/yrs/get 261.8±1.54ns 259.0±1.36ns -1.07%
ops/map/yrs/insert 3.9±0.02µs 3.9±0.04µs -0.00%
ops/map/yrs/remove 5.0±0.03µs 5.0±0.02µs -0.00%
ops/text/jwst/insert 66.9±0.48µs 68.3±0.40µs +2.09%
ops/text/jwst/remove 1392.3±7.22ns 1404.9±9.71ns +0.90%
ops/text/yrs/insert 26.9±0.33µs 27.1±0.09µs +0.74%
ops/text/yrs/remove 1682.6±9.32ns 1736.1±14.44ns +3.18%
update/parse with jwst/basic.bin 36.5±0.26µs 38.7±0.10µs +6.03%
update/parse with jwst/database.bin 28.4±0.29µs 29.7±0.21µs +4.58%
update/parse with jwst/large.bin 3.6±0.03ms 3.3±0.03ms -8.33%
update/parse with jwst/with-subdoc.bin 4.6±0.02µs 4.7±0.02µs +2.17%
update/parse with yrs/basic.bin 29.8±0.18µs 30.3±0.18µs +1.68%
update/parse with yrs/database.bin 23.0±0.16µs 23.6±0.19µs +2.61%
update/parse with yrs/large.bin 2.4±0.01ms 2.4±0.02ms -0.00%
update/parse with yrs/with-subdoc.bin 3.8±0.09µs 4.6±0.03µs +21.05%

Benchmark for Windows

Click to view benchmark
Test Base PR %
codec/jwst decode var_int (32 bit) 214.7±8.65µs 212.5±1.04µs -1.02%
codec/jwst decode var_uint (32 bit) 181.1±4.97µs 180.5±3.43µs -0.33%
codec/jwst decode var_uint (64 bit) 195.7±3.63µs 195.0±3.15µs -0.36%
codec/jwst encode var_int (32 bit) 303.9±3.80µs 302.5±1.20µs -0.46%
codec/jwst encode var_uint (32 bit) 273.3±3.61µs 269.3±2.31µs -1.46%
codec/jwst encode var_uint (64 bit) 268.4±2.98µs 267.6±4.08µs -0.30%
codec/lib0 decode var_int (64 bit) 189.0±6.11µs 190.1±7.60µs +0.58%
codec/lib0 decode var_uint (32 bit) 156.3±8.72µs 157.6±9.34µs +0.83%
codec/lib0 decode var_uint (64 bit) 157.7±6.22µs 157.6±5.35µs -0.06%
codec/lib0 encode var_int (64 bit) 385.7±1.25µs 384.5±2.09µs -0.31%
codec/lib0 encode var_uint (32 bit) 374.7±4.40µs 374.3±2.15µs -0.11%
codec/lib0 encode var_uint (64 bit) 374.3±1.44µs 385.4±1.97µs +2.97%
ops/array/jwst/insert 124.2±0.92µs 125.3±0.78µs +0.89%
ops/array/jwst/insert range 182.2±1.08µs 180.5±0.50µs -0.93%
ops/array/jwst/remove 69.0±0.27µs 65.9±0.13µs -4.49%
ops/array/yrs/insert 75.8±0.51µs 73.9±1.27µs -2.51%
ops/array/yrs/insert range 99.2±0.69µs 99.5±0.35µs +0.30%
ops/array/yrs/remove 105.7±1.74µs 104.3±0.94µs -1.32%
ops/map/jwst/get 265.0±2.32ns 259.2±2.70ns -2.19%
ops/map/jwst/insert 5.0±0.04µs 4.7±0.02µs -6.00%
ops/map/jwst/remove 6.8±0.02µs 6.9±0.13µs +1.47%
ops/map/yrs/get 269.5±4.46ns 276.6±4.98ns +2.63%
ops/map/yrs/insert 5.7±0.03µs 5.8±0.04µs +1.75%
ops/map/yrs/remove 6.9±0.04µs 7.3±0.02µs +5.80%
ops/text/jwst/insert 83.6±0.68µs 85.4±0.48µs +2.15%
ops/text/jwst/remove 2.2±0.02µs 2.2±0.01µs -0.00%
ops/text/yrs/insert 33.5±0.27µs 32.9±0.27µs -1.79%
ops/text/yrs/remove 2.5±0.02µs 2.5±0.02µs -0.00%
update/parse with jwst/basic.bin 52.4±0.47µs 56.7±0.82µs +8.21%
update/parse with jwst/database.bin 42.4±0.35µs 46.6±0.22µs +9.91%
update/parse with jwst/large.bin 2.6±0.09ms 2.8±0.09ms +7.69%
update/parse with jwst/with-subdoc.bin 8.2±0.08µs 8.0±0.03µs -2.44%
update/parse with yrs/basic.bin 43.3±0.55µs 43.9±0.53µs +1.39%
update/parse with yrs/database.bin 34.7±0.12µs 33.5±0.56µs -3.46%
update/parse with yrs/large.bin 2.2±0.08ms 2.0±0.05ms -9.09%
update/parse with yrs/with-subdoc.bin 7.2±0.06µs 6.7±0.05µs -6.94%

@forehalo forehalo force-pushed the refactor/update-binary-by-ref branch from 2d6c0dd to 65fce2c Compare December 18, 2023 06:34
@Brooooooklyn
Copy link
Collaborator

Since we introduce the zero copy parse here, We can use https://github.com/fitzgen/bumpalo for further optimization in the future.

@codecov-commenter
Copy link

codecov-commenter commented Dec 18, 2023

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (d29799a) 78.32% compared to head (602c0b4) 36.92%.
Report is 1 commits behind head on main.

❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@             Coverage Diff             @@
##             main      #35       +/-   ##
===========================================
- Coverage   78.32%   36.92%   -41.41%     
===========================================
  Files          50        1       -49     
  Lines        7682      260     -7422     
===========================================
- Hits         6017       96     -5921     
+ Misses       1665      164     -1501     
Flag Coverage Δ
node-binding-test 36.92% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

Benchmark for Linux

Click to view benchmark
Test Base PR %
codec/jwst decode var_int (32 bit) 213.0±0.90µs 213.0±0.69µs -0.00%
codec/jwst decode var_uint (32 bit) 178.4±1.29µs 178.1±0.47µs -0.17%
codec/jwst decode var_uint (64 bit) 180.4±0.77µs 180.6±0.96µs +0.11%
codec/jwst encode var_int (32 bit) 302.6±1.19µs 302.8±1.66µs +0.07%
codec/jwst encode var_uint (32 bit) 253.6±5.47µs 251.7±3.77µs -0.75%
codec/jwst encode var_uint (64 bit) 252.4±3.36µs 251.3±3.61µs -0.44%
codec/lib0 decode var_int (64 bit) 188.1±8.66µs 186.5±5.57µs -0.85%
codec/lib0 decode var_uint (32 bit) 155.5±2.82µs 154.2±4.00µs -0.84%
codec/lib0 decode var_uint (64 bit) 152.7±1.18µs 153.6±3.21µs +0.59%
codec/lib0 encode var_int (64 bit) 384.4±2.02µs 384.4±3.84µs -0.00%
codec/lib0 encode var_uint (32 bit) 373.9±3.45µs 373.0±0.52µs -0.24%
codec/lib0 encode var_uint (64 bit) 373.6±3.25µs 373.1±0.78µs -0.13%
ops/array/jwst/insert 104.9±0.92µs 104.3±0.35µs -0.57%
ops/array/jwst/insert range 156.9±2.61µs 156.9±0.47µs -0.00%
ops/array/jwst/remove 60.8±0.12µs 62.4±0.20µs +2.63%
ops/array/yrs/insert 58.5±0.81µs 58.2±0.27µs -0.51%
ops/array/yrs/insert range 75.7±1.20µs 75.2±0.55µs -0.66%
ops/array/yrs/remove 66.1±0.81µs 63.1±0.70µs -4.54%
ops/map/jwst/get 208.6±1.12ns 207.3±1.29ns -0.62%
ops/map/jwst/insert 3.2±0.04µs 3.0±0.03µs -6.25%
ops/map/jwst/remove 4.8±0.01µs 4.6±0.10µs -4.17%
ops/map/yrs/get 258.3±2.03ns 265.9±1.56ns +2.94%
ops/map/yrs/insert 3.9±0.04µs 3.9±0.04µs -0.00%
ops/map/yrs/remove 5.0±0.03µs 5.0±0.01µs -0.00%
ops/text/jwst/insert 69.4±0.76µs 67.3±0.48µs -3.03%
ops/text/jwst/remove 1366.1±8.36ns 1366.6±14.77ns +0.04%
ops/text/yrs/insert 26.9±0.28µs 26.9±0.16µs -0.00%
ops/text/yrs/remove 1760.6±17.04ns 1777.0±21.64ns +0.93%
update/parse with jwst/basic.bin 38.9±0.19µs 44.5±0.22µs +14.40%
update/parse with jwst/database.bin 28.6±0.20µs 34.2±0.28µs +19.58%
update/parse with jwst/large.bin 3.4±0.02ms 3.5±0.03ms +2.94%
update/parse with jwst/with-subdoc.bin 4.7±0.06µs 5.6±0.04µs +19.15%
update/parse with yrs/basic.bin 30.2±0.13µs 30.4±0.09µs +0.66%
update/parse with yrs/database.bin 23.0±0.14µs 23.7±0.68µs +3.04%
update/parse with yrs/large.bin 2.4±0.02ms 2.4±0.06ms -0.00%
update/parse with yrs/with-subdoc.bin 3.8±0.02µs 4.1±0.03µs +7.89%

Benchmark for Windows

Click to view benchmark
Test Base PR %
codec/jwst decode var_int (32 bit) 213.1±1.06µs 212.6±1.59µs -0.23%
codec/jwst decode var_uint (32 bit) 181.5±4.27µs 180.4±3.59µs -0.61%
codec/jwst decode var_uint (64 bit) 193.9±2.04µs 195.4±3.42µs +0.77%
codec/jwst encode var_int (32 bit) 303.2±2.80µs 304.3±6.41µs +0.36%
codec/jwst encode var_uint (32 bit) 271.3±3.22µs 271.0±2.91µs -0.11%
codec/jwst encode var_uint (64 bit) 267.9±2.12µs 267.2±1.31µs -0.26%
codec/lib0 decode var_int (64 bit) 187.7±5.94µs 190.9±7.43µs +1.70%
codec/lib0 decode var_uint (32 bit) 157.6±8.30µs 158.5±8.88µs +0.57%
codec/lib0 decode var_uint (64 bit) 155.5±4.56µs 152.5±3.68µs -1.93%
codec/lib0 encode var_int (64 bit) 384.7±2.16µs 386.2±5.12µs +0.39%
codec/lib0 encode var_uint (32 bit) 373.5±1.47µs 373.2±0.86µs -0.08%
codec/lib0 encode var_uint (64 bit) 373.4±1.02µs 373.3±1.01µs -0.03%
ops/array/jwst/insert 123.6±0.83µs 122.1±1.40µs -1.21%
ops/array/jwst/insert range 178.3±0.65µs 182.4±0.73µs +2.30%
ops/array/jwst/remove 66.9±0.25µs 65.9±0.18µs -1.49%
ops/array/yrs/insert 77.0±0.59µs 74.4±0.74µs -3.38%
ops/array/yrs/insert range 98.5±0.46µs 99.9±0.74µs +1.42%
ops/array/yrs/remove 102.6±0.30µs 103.1±0.32µs +0.49%
ops/map/jwst/get 265.3±2.54ns 260.0±3.40ns -2.00%
ops/map/jwst/insert 5.2±0.03µs 4.6±0.03µs -11.54%
ops/map/jwst/remove 7.0±0.02µs 6.8±0.04µs -2.86%
ops/map/yrs/get 271.6±6.40ns 271.7±6.33ns +0.04%
ops/map/yrs/insert 5.8±0.05µs 5.8±0.03µs -0.00%
ops/map/yrs/remove 7.0±0.02µs 7.4±0.02µs +5.71%
ops/text/jwst/insert 83.9±0.82µs 84.4±0.45µs +0.60%
ops/text/jwst/remove 2.2±0.01µs 2.1±0.01µs -4.55%
ops/text/yrs/insert 34.7±0.21µs 32.9±0.29µs -5.19%
ops/text/yrs/remove 2.5±0.02µs 2.5±0.02µs -0.00%
update/parse with jwst/basic.bin 52.6±0.36µs 58.4±0.63µs +11.03%
update/parse with jwst/database.bin 43.4±0.37µs 45.1±0.16µs +3.92%
update/parse with jwst/large.bin 2.5±0.03ms 2.7±0.09ms +8.00%
update/parse with jwst/with-subdoc.bin 8.0±0.05µs 8.1±0.06µs +1.25%
update/parse with yrs/basic.bin 43.3±0.18µs 44.4±0.43µs +2.54%
update/parse with yrs/database.bin 34.7±0.15µs 34.4±0.18µs -0.86%
update/parse with yrs/large.bin 2.1±0.09ms 2.0±0.06ms -4.76%
update/parse with yrs/with-subdoc.bin 7.0±0.06µs 7.0±0.05µs -0.00%

@forehalo forehalo force-pushed the refactor/update-binary-by-ref branch 5 times, most recently from f4a4eb8 to 23ec958 Compare December 18, 2023 08:15
Copy link

Benchmark for Linux

Click to view benchmark
Test Base PR %
codec/jwst decode var_int (32 bit) 213.1±0.87µs 213.2±2.15µs +0.05%
codec/jwst decode var_uint (32 bit) 178.0±0.28µs 178.3±0.55µs +0.17%
codec/jwst decode var_uint (64 bit) 180.3±0.73µs 180.5±0.85µs +0.11%
codec/jwst encode var_int (32 bit) 303.4±6.22µs 302.8±1.81µs -0.20%
codec/jwst encode var_uint (32 bit) 256.5±17.18µs 250.3±4.24µs -2.42%
codec/jwst encode var_uint (64 bit) 252.6±3.81µs 251.7±3.72µs -0.36%
codec/lib0 decode var_int (64 bit) 185.9±2.34µs 187.0±4.70µs +0.59%
codec/lib0 decode var_uint (32 bit) 153.8±3.20µs 180.9±0.68µs +17.62%
codec/lib0 decode var_uint (64 bit) 153.6±3.09µs 153.5±2.96µs -0.07%
codec/lib0 encode var_int (64 bit) 383.9±0.54µs 384.1±2.84µs +0.05%
codec/lib0 encode var_uint (32 bit) 373.0±1.73µs 372.8±0.49µs -0.05%
codec/lib0 encode var_uint (64 bit) 373.0±1.08µs 372.7±0.23µs -0.08%
ops/array/jwst/insert 105.4±0.72µs 106.2±0.31µs +0.76%
ops/array/jwst/insert range 156.5±0.50µs 159.5±0.88µs +1.92%
ops/array/jwst/remove 60.5±0.26µs 71.0±0.27µs +17.36%
ops/array/yrs/insert 57.9±0.43µs 58.3±0.54µs +0.69%
ops/array/yrs/insert range 74.9±0.60µs 75.2±0.62µs +0.40%
ops/array/yrs/remove 63.7±0.78µs 65.4±0.80µs +2.67%
ops/map/jwst/get 205.2±1.48ns 208.0±1.34ns +1.36%
ops/map/jwst/insert 3.1±0.02µs 3.0±0.03µs -3.23%
ops/map/jwst/remove 4.8±0.02µs 4.4±0.02µs -8.33%
ops/map/yrs/get 258.9±2.28ns 258.8±1.29ns -0.04%
ops/map/yrs/insert 3.9±0.02µs 3.9±0.04µs -0.00%
ops/map/yrs/remove 5.1±0.03µs 5.0±0.03µs -1.96%
ops/text/jwst/insert 66.9±0.73µs 70.0±0.38µs +4.63%
ops/text/jwst/remove 1383.4±6.60ns 1417.6±13.24ns +2.47%
ops/text/yrs/insert 26.7±0.25µs 26.9±0.12µs +0.75%
ops/text/yrs/remove 1744.9±13.73ns 1723.8±37.50ns -1.21%
update/parse with jwst/basic.bin 36.7±0.98µs 39.0±0.24µs +6.27%
update/parse with jwst/database.bin 28.1±0.20µs 30.1±0.24µs +7.12%
update/parse with jwst/large.bin 3.7±0.03ms 3.3±0.09ms -10.81%
update/parse with jwst/with-subdoc.bin 4.5±0.03µs 4.9±0.03µs +8.89%
update/parse with yrs/basic.bin 30.5±0.10µs 30.1±0.08µs -1.31%
update/parse with yrs/database.bin 23.3±0.15µs 23.2±0.15µs -0.43%
update/parse with yrs/large.bin 2.3±0.01ms 2.4±0.01ms +4.35%
update/parse with yrs/with-subdoc.bin 3.6±0.02µs 4.0±0.02µs +11.11%

Benchmark for Windows

Click to view benchmark
Test Base PR %
codec/jwst decode var_int (32 bit) 212.8±0.69µs 212.5±0.75µs -0.14%
codec/jwst decode var_uint (32 bit) 181.1±3.64µs 180.7±3.65µs -0.22%
codec/jwst decode var_uint (64 bit) 195.8±2.95µs 195.7±3.48µs -0.05%
codec/jwst encode var_int (32 bit) 304.2±3.37µs 302.5±1.18µs -0.56%
codec/jwst encode var_uint (32 bit) 273.2±3.26µs 270.9±1.63µs -0.84%
codec/jwst encode var_uint (64 bit) 268.0±5.57µs 267.5±2.23µs -0.19%
codec/lib0 decode var_int (64 bit) 189.1±6.13µs 188.9±6.89µs -0.11%
codec/lib0 decode var_uint (32 bit) 155.2±5.68µs 158.4±10.08µs +2.06%
codec/lib0 decode var_uint (64 bit) 157.8±5.75µs 157.9±6.91µs +0.06%
codec/lib0 encode var_int (64 bit) 385.0±3.07µs 384.5±2.47µs -0.13%
codec/lib0 encode var_uint (32 bit) 373.9±2.56µs 373.3±1.77µs -0.16%
codec/lib0 encode var_uint (64 bit) 374.3±1.11µs 384.2±1.50µs +2.64%
ops/array/jwst/insert 121.9±0.71µs 122.3±0.78µs +0.33%
ops/array/jwst/insert range 181.4±0.58µs 182.3±0.66µs +0.50%
ops/array/jwst/remove 66.4±0.15µs 66.1±0.30µs -0.45%
ops/array/yrs/insert 77.2±1.99µs 73.5±0.46µs -4.79%
ops/array/yrs/insert range 99.4±0.40µs 99.6±0.52µs +0.20%
ops/array/yrs/remove 102.3±0.28µs 101.3±0.27µs -0.98%
ops/map/jwst/get 265.7±2.87ns 261.1±5.55ns -1.73%
ops/map/jwst/insert 5.1±0.04µs 4.6±0.02µs -9.80%
ops/map/jwst/remove 7.1±0.03µs 9.0±0.05µs +26.76%
ops/map/yrs/get 285.1±6.70ns 270.7±5.71ns -5.05%
ops/map/yrs/insert 5.8±0.05µs 5.7±0.05µs -1.72%
ops/map/yrs/remove 7.0±0.03µs 7.3±0.03µs +4.29%
ops/text/jwst/insert 86.4±0.71µs 81.2±0.63µs -6.02%
ops/text/jwst/remove 2.1±0.01µs 2.1±0.01µs -0.00%
ops/text/yrs/insert 34.8±0.46µs 32.9±0.15µs -5.46%
ops/text/yrs/remove 2.5±0.01µs 2.5±0.02µs -0.00%
update/parse with jwst/basic.bin 52.3±0.29µs 54.6±0.51µs +4.40%
update/parse with jwst/database.bin 44.3±0.38µs 42.9±0.31µs -3.16%
update/parse with jwst/large.bin 2.6±0.09ms 2.6±0.05ms -0.00%
update/parse with jwst/with-subdoc.bin 7.7±0.06µs 7.5±0.03µs -2.60%
update/parse with yrs/basic.bin 43.6±0.45µs 44.2±0.20µs +1.38%
update/parse with yrs/database.bin 35.0±0.38µs 34.4±0.16µs -1.71%
update/parse with yrs/large.bin 2.1±0.07ms 2.1±0.08ms -0.00%
update/parse with yrs/with-subdoc.bin 7.0±0.04µs 6.9±0.09µs -1.43%

@forehalo forehalo force-pushed the refactor/update-binary-by-ref branch from 50a99f5 to 0f971fe Compare December 18, 2023 09:28
Copy link

Benchmark for Linux

Click to view benchmark
Test Base PR %
codec/jwst decode var_int (32 bit) 213.1±0.79µs 212.9±0.53µs -0.09%
codec/jwst decode var_uint (32 bit) 178.2±0.29µs 178.1±0.44µs -0.06%
codec/jwst decode var_uint (64 bit) 180.5±0.47µs 180.7±0.88µs +0.11%
codec/jwst encode var_int (32 bit) 303.9±5.12µs 302.8±1.55µs -0.36%
codec/jwst encode var_uint (32 bit) 250.6±3.95µs 252.8±3.46µs +0.88%
codec/jwst encode var_uint (64 bit) 253.3±12.81µs 253.3±16.30µs -0.00%
codec/lib0 decode var_int (64 bit) 185.9±2.53µs 184.0±1.16µs -1.02%
codec/lib0 decode var_uint (32 bit) 154.4±3.72µs 153.6±3.08µs -0.52%
codec/lib0 decode var_uint (64 bit) 153.5±2.49µs 151.2±0.90µs -1.50%
codec/lib0 encode var_int (64 bit) 384.2±1.05µs 385.4±9.64µs +0.31%
codec/lib0 encode var_uint (32 bit) 373.1±0.98µs 373.2±1.34µs +0.03%
codec/lib0 encode var_uint (64 bit) 373.1±1.92µs 373.2±0.95µs +0.03%
ops/array/jwst/insert 115.4±0.68µs 105.8±0.29µs -8.32%
ops/array/jwst/insert range 166.8±2.41µs 157.0±0.59µs -5.88%
ops/array/jwst/remove 70.8±0.20µs 62.0±0.16µs -12.43%
ops/array/yrs/insert 59.8±1.57µs 57.8±0.65µs -3.34%
ops/array/yrs/insert range 75.1±0.36µs 75.2±1.34µs +0.13%
ops/array/yrs/remove 68.1±2.54µs 67.5±1.41µs -0.88%
ops/map/jwst/get 206.3±8.07ns 213.6±1.39ns +3.54%
ops/map/jwst/insert 3.0±0.03µs 2.9±0.02µs -3.33%
ops/map/jwst/remove 4.3±0.01µs 4.4±0.01µs +2.33%
ops/map/yrs/get 262.3±4.89ns 258.2±1.22ns -1.56%
ops/map/yrs/insert 3.9±0.03µs 3.9±0.05µs -0.00%
ops/map/yrs/remove 5.1±0.02µs 5.0±0.02µs -1.96%
ops/text/jwst/insert 68.3±0.77µs 67.5±0.33µs -1.17%
ops/text/jwst/remove 1416.2±5.66ns 1393.2±43.01ns -1.62%
ops/text/yrs/insert 27.0±0.16µs 27.3±0.40µs +1.11%
ops/text/yrs/remove 1760.5±14.10ns 1731.4±8.61ns -1.65%
update/parse with jwst/basic.bin 37.4±0.14µs 39.5±1.00µs +5.61%
update/parse with jwst/database.bin 28.4±0.65µs 30.0±0.18µs +5.63%
update/parse with jwst/large.bin 3.3±0.02ms 3.3±0.03ms -0.00%
update/parse with jwst/with-subdoc.bin 4.6±0.04µs 4.9±0.02µs +6.52%
update/parse with yrs/basic.bin 29.7±0.19µs 29.6±0.40µs -0.34%
update/parse with yrs/database.bin 23.1±0.06µs 23.2±0.21µs +0.43%
update/parse with yrs/large.bin 2.3±0.01ms 2.4±0.01ms +4.35%
update/parse with yrs/with-subdoc.bin 3.8±0.02µs 4.6±0.02µs +21.05%

Benchmark for Windows

Click to view benchmark
Test Base PR %
codec/jwst decode var_int (32 bit) 213.3±2.64µs 213.0±3.59µs -0.14%
codec/jwst decode var_uint (32 bit) 180.2±3.16µs 181.1±4.57µs +0.50%
codec/jwst decode var_uint (64 bit) 195.6±6.02µs 195.0±3.36µs -0.31%
codec/jwst encode var_int (32 bit) 304.4±4.63µs 303.0±3.87µs -0.46%
codec/jwst encode var_uint (32 bit) 273.2±3.22µs 271.4±3.17µs -0.66%
codec/jwst encode var_uint (64 bit) 267.1±2.55µs 265.9±1.46µs -0.45%
codec/lib0 decode var_int (64 bit) 192.3±7.13µs 188.6±5.94µs -1.92%
codec/lib0 decode var_uint (32 bit) 156.6±7.74µs 163.0±8.11µs +4.09%
codec/lib0 decode var_uint (64 bit) 156.9±6.16µs 158.2±5.82µs +0.83%
codec/lib0 encode var_int (64 bit) 385.6±1.61µs 386.8±8.82µs +0.31%
codec/lib0 encode var_uint (32 bit) 386.2±2.96µs 374.4±2.42µs -3.06%
codec/lib0 encode var_uint (64 bit) 380.0±1.53µs 373.0±0.76µs -1.84%
ops/array/jwst/insert 122.4±3.09µs 121.9±0.52µs -0.41%
ops/array/jwst/insert range 178.1±0.97µs 181.9±1.75µs +2.13%
ops/array/jwst/remove 65.8±0.33µs 66.8±0.21µs +1.52%
ops/array/yrs/insert 74.7±0.36µs 72.3±0.61µs -3.21%
ops/array/yrs/insert range 100.2±0.40µs 99.7±0.64µs -0.50%
ops/array/yrs/remove 102.6±0.67µs 103.1±0.42µs +0.49%
ops/map/jwst/get 264.9±2.75ns 260.9±4.25ns -1.51%
ops/map/jwst/insert 4.6±0.09µs 4.5±0.02µs -2.17%
ops/map/jwst/remove 6.8±0.04µs 6.8±0.04µs -0.00%
ops/map/yrs/get 270.5±4.89ns 274.8±6.06ns +1.59%
ops/map/yrs/insert 6.0±0.07µs 5.7±0.08µs -5.00%
ops/map/yrs/remove 7.2±0.06µs 7.3±0.05µs +1.39%
ops/text/jwst/insert 84.2±0.61µs 81.7±0.67µs -2.97%
ops/text/jwst/remove 2.1±0.04µs 2.2±0.01µs +4.76%
ops/text/yrs/insert 34.3±0.28µs 32.7±0.11µs -4.66%
ops/text/yrs/remove 2.5±0.02µs 2.5±0.05µs -0.00%
update/parse with jwst/basic.bin 52.3±0.52µs 56.3±0.68µs +7.65%
update/parse with jwst/database.bin 43.3±0.20µs 42.4±0.28µs -2.08%
update/parse with jwst/large.bin 2.5±0.05ms 2.6±0.06ms +4.00%
update/parse with jwst/with-subdoc.bin 7.8±0.04µs 7.7±0.05µs -1.28%
update/parse with yrs/basic.bin 43.7±0.34µs 43.7±0.20µs -0.00%
update/parse with yrs/database.bin 35.4±0.26µs 35.2±0.23µs -0.56%
update/parse with yrs/large.bin 2.1±0.06ms 2.1±0.06ms -0.00%
update/parse with yrs/with-subdoc.bin 7.3±0.07µs 7.0±0.06µs -4.11%

@forehalo forehalo force-pushed the refactor/update-binary-by-ref branch from 0f971fe to 602c0b4 Compare December 19, 2023 10:27
Copy link

Benchmark for Linux

Click to view benchmark
Test Base PR %
codec/jwst decode var_int (32 bit) 212.9±0.71µs 213.1±0.83µs +0.09%
codec/jwst decode var_uint (32 bit) 178.2±0.70µs 178.2±0.68µs -0.00%
codec/jwst decode var_uint (64 bit) 181.0±4.03µs 180.7±6.10µs -0.17%
codec/jwst encode var_int (32 bit) 302.2±1.12µs 302.5±0.77µs +0.10%
codec/jwst encode var_uint (32 bit) 251.6±3.48µs 253.4±1.94µs +0.72%
codec/jwst encode var_uint (64 bit) 252.8±3.92µs 253.5±4.06µs +0.28%
codec/lib0 decode var_int (64 bit) 186.8±2.20µs 185.4±1.91µs -0.75%
codec/lib0 decode var_uint (32 bit) 153.9±3.14µs 153.2±0.74µs -0.45%
codec/lib0 decode var_uint (64 bit) 154.1±2.86µs 153.3±2.56µs -0.52%
codec/lib0 encode var_int (64 bit) 397.5±26.20µs 384.5±3.89µs -3.27%
codec/lib0 encode var_uint (32 bit) 373.7±5.09µs 373.1±0.87µs -0.16%
codec/lib0 encode var_uint (64 bit) 373.3±1.05µs 373.3±1.13µs -0.00%
ops/array/jwst/insert 106.6±1.91µs 105.3±0.53µs -1.22%
ops/array/jwst/insert range 157.9±0.88µs 158.8±2.18µs +0.57%
ops/array/jwst/remove 61.1±0.76µs 62.3±0.19µs +1.96%
ops/array/yrs/insert 58.7±0.98µs 60.5±0.67µs +3.07%
ops/array/yrs/insert range 74.8±0.66µs 79.0±0.56µs +5.61%
ops/array/yrs/remove 60.4±0.33µs 62.7±0.25µs +3.81%
ops/map/jwst/get 205.7±4.12ns 207.5±0.95ns +0.88%
ops/map/jwst/insert 2.9±0.03µs 3.0±0.04µs +3.45%
ops/map/jwst/remove 4.2±0.01µs 4.6±0.02µs +9.52%
ops/map/yrs/get 260.4±1.53ns 258.8±1.92ns -0.61%
ops/map/yrs/insert 3.9±0.04µs 3.9±0.01µs -0.00%
ops/map/yrs/remove 5.0±0.03µs 5.0±0.03µs -0.00%
ops/text/jwst/insert 66.1±1.72µs 68.1±0.69µs +3.03%
ops/text/jwst/remove 1386.2±58.15ns 1374.1±5.18ns -0.87%
ops/text/yrs/insert 26.7±0.20µs 26.9±0.27µs +0.75%
ops/text/yrs/remove 1722.2±20.99ns 1696.2±11.84ns -1.51%
update/parse with jwst/basic.bin 36.3±0.15µs 39.1±0.13µs +7.71%
update/parse with jwst/database.bin 28.3±0.94µs 30.1±0.19µs +6.36%
update/parse with jwst/large.bin 3.6±0.01ms 3.3±0.04ms -8.33%
update/parse with jwst/with-subdoc.bin 4.5±0.02µs 4.8±0.02µs +6.67%
update/parse with yrs/basic.bin 30.3±0.08µs 30.1±0.32µs -0.66%
update/parse with yrs/database.bin 23.2±0.20µs 23.1±0.15µs -0.43%
update/parse with yrs/large.bin 2.4±0.01ms 2.4±0.01ms -0.00%
update/parse with yrs/with-subdoc.bin 3.9±0.04µs 3.7±0.02µs -5.13%

Benchmark for Windows

Click to view benchmark
Test Base PR %
codec/jwst decode var_int (32 bit) 213.3±3.76µs 212.6±0.88µs -0.33%
codec/jwst decode var_uint (32 bit) 180.5±2.74µs 179.6±2.91µs -0.50%
codec/jwst decode var_uint (64 bit) 194.9±2.73µs 196.7±8.33µs +0.92%
codec/jwst encode var_int (32 bit) 306.4±13.13µs 303.6±7.70µs -0.91%
codec/jwst encode var_uint (32 bit) 272.9±1.20µs 272.7±3.51µs -0.07%
codec/jwst encode var_uint (64 bit) 267.7±1.46µs 269.2±4.41µs +0.56%
codec/lib0 decode var_int (64 bit) 188.5±0.82µs 191.5±7.37µs +1.59%
codec/lib0 decode var_uint (32 bit) 156.7±8.61µs 150.6±0.99µs -3.89%
codec/lib0 decode var_uint (64 bit) 158.1±5.53µs 158.3±6.84µs +0.13%
codec/lib0 encode var_int (64 bit) 388.1±14.45µs 384.5±3.08µs -0.93%
codec/lib0 encode var_uint (32 bit) 373.5±1.20µs 373.4±0.92µs -0.03%
codec/lib0 encode var_uint (64 bit) 373.4±1.22µs 373.2±1.04µs -0.05%
ops/array/jwst/insert 124.5±2.29µs 121.9±0.89µs -2.09%
ops/array/jwst/insert range 183.2±1.91µs 179.0±1.61µs -2.29%
ops/array/jwst/remove 67.7±0.28µs 66.4±0.35µs -1.92%
ops/array/yrs/insert 73.9±0.60µs 72.5±0.44µs -1.89%
ops/array/yrs/insert range 99.1±0.84µs 99.6±0.46µs +0.50%
ops/array/yrs/remove 105.3±0.66µs 104.8±1.79µs -0.47%
ops/map/jwst/get 266.1±2.60ns 260.7±3.88ns -2.03%
ops/map/jwst/insert 4.7±0.03µs 4.6±0.19µs -2.13%
ops/map/jwst/remove 9.9±0.04µs 6.7±0.02µs -32.32%
ops/map/yrs/get 274.3±7.16ns 270.1±4.38ns -1.53%
ops/map/yrs/insert 5.9±0.02µs 5.8±0.04µs -1.69%
ops/map/yrs/remove 7.0±0.03µs 7.5±0.03µs +7.14%
ops/text/jwst/insert 85.0±1.12µs 85.1±2.16µs +0.12%
ops/text/jwst/remove 2.2±0.02µs 2.2±0.01µs -0.00%
ops/text/yrs/insert 34.9±0.51µs 33.3±0.14µs -4.58%
ops/text/yrs/remove 2.5±0.03µs 2.5±0.01µs -0.00%
update/parse with jwst/basic.bin 52.2±0.55µs 57.3±0.54µs +9.77%
update/parse with jwst/database.bin 43.7±0.17µs 43.3±0.21µs -0.92%
update/parse with jwst/large.bin 2.6±0.08ms 2.7±0.12ms +3.85%
update/parse with jwst/with-subdoc.bin 7.7±0.04µs 7.8±0.03µs +1.30%
update/parse with yrs/basic.bin 43.6±0.43µs 43.8±0.25µs +0.46%
update/parse with yrs/database.bin 35.0±0.16µs 34.6±0.29µs -1.14%
update/parse with yrs/large.bin 2.1±0.04ms 2.1±0.05ms -0.00%
update/parse with yrs/with-subdoc.bin 7.3±0.04µs 7.0±0.06µs -4.11%

@Brooooooklyn Brooooooklyn merged commit 48bdeb2 into main Dec 19, 2023
17 checks passed
@Brooooooklyn Brooooooklyn deleted the refactor/update-binary-by-ref branch December 19, 2023 12:26
darkskygit pushed a commit to toeverything/OctoBase that referenced this pull request Dec 28, 2023
darkskygit pushed a commit to toeverything/OctoBase that referenced this pull request Jan 31, 2024
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.

4 participants