Skip to content

Commit

Permalink
refactor(result): add symbol for general way of detecting result
Browse files Browse the repository at this point in the history
  • Loading branch information
yifanwww committed Dec 9, 2024
1 parent fa27850 commit cbc9688
Show file tree
Hide file tree
Showing 32 changed files with 218 additions and 132 deletions.
12 changes: 6 additions & 6 deletions packages/benchmark/src/extra-methods/equal.log
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
[ true, false ]

Loop N: 100,000
┌─────────┬──────────────────────────────┬──────────────────────┬───────────────────────┬───────────────┬───────────────┬─────────┐
│ (index) │ task │ mean (ns) │ median (ns) │ mean (op/s) │ median (op/s) │ samples │
├─────────┼──────────────────────────────┼──────────────────────┼───────────────────────┼───────────────┼───────────────┼─────────┤
│ 0 │ 'rustresult Result.equal #1' │ '3112590.68 ± 0.45%' │ '3096500.04 ± 0.12' │ '322 ± 0.31%' │ '323' │ 322
│ 1 │ 'rustresult Result.equal #2' │ '7945796.82 ± 0.21%' │ '7928799.99 ± 100.02' │ '126 ± 0.19%' │ '126' │ 126
└─────────┴──────────────────────────────┴──────────────────────┴───────────────────────┴───────────────┴───────────────┴─────────┘
┌─────────┬──────────────────────────────┬───────────────────────┬───────────────┬───────────────┬───────────────┬─────────┐
│ (index) │ task │ mean (ns) │ median (ns) │ mean (op/s) │ median (op/s) │ samples │
├─────────┼──────────────────────────────┼───────────────────────┼───────────────┼───────────────┼───────────────┼─────────┤
│ 0 │ 'rustresult Result.equal #1' │ '4984674.61 ± 2.00%' │ '4883499.86' │ '203 ± 0.93%' │ '205' │ 201
│ 1 │ 'rustresult Result.equal #2' │ '10140018.18 ± 0.03%' │ '10137099.98' │ '99 ± 0.03%' │ '99' │ 99
└─────────┴──────────────────────────────┴───────────────────────┴───────────────┴───────────────┴───────────────┴─────────┘
19 changes: 10 additions & 9 deletions packages/benchmark/src/factories/Err.log
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
RustlikeResult {
_type: 'err',
_value: undefined,
_error: 'error message'
_error: 'error message',
_symbol: Symbol(rust_result)
}

> neverthrow err:
Expand All @@ -23,11 +24,11 @@ Err { error: 'error message' }
}

Loop N: 100,000
┌─────────┬──────────────────────┬──────────────────────┬──────────────┬────────────────┬───────────────┬─────────┐
│ (index) │ task │ mean (ns) │ median (ns) │ mean (op/s) │ median (op/s) │ samples │
├─────────┼──────────────────────┼──────────────────────┼──────────────┼────────────────┼───────────────┼─────────┤
│ 0 │ 'rustresult Err' │ '396911.70 ± 0.56%' │ '373600.01' │ '2566 ± 0.50%' │ '2677' │ 2520
│ 1 │ 'neverthrow err' │ '272838.43 ± 0.53%' │ '252300.02' │ '3751 ± 0.46%' │ '3964' │ 3666
│ 2 │ 'effect Effect.fail' │ '1199478.54 ± 0.99%' │ '1157300.00' │ '845 ± 0.68%' │ '864' │ 834
│ 3 │ 'effect Exit.fail' │ '1149108.72 ± 0.57%' │ '1125799.89' │ '876 ± 0.52%' │ '888' │ 871
└─────────┴──────────────────────┴──────────────────────┴──────────────┴────────────────┴───────────────┴─────────┘
┌─────────┬──────────────────────┬──────────────────────┬───────────────────────┬────────────────┬───────────────┬─────────┐
│ (index) │ task │ mean (ns) │ median (ns) │ mean (op/s) │ median (op/s) │ samples │
├─────────┼──────────────────────┼──────────────────────┼───────────────────────┼────────────────┼───────────────┼─────────┤
│ 0 │ 'rustresult Err' │ '459830.16 ± 0.59%' │ '442600.01' │ '2213 ± 0.53%' │ '2259' │ 2175
│ 1 │ 'neverthrow err' │ '273295.22 ± 0.56%' │ '252999.90 ± 0.12' │ '3753 ± 0.48%' │ '3953' │ 3660
│ 2 │ 'effect Effect.fail' │ '1179306.25 ± 0.62%' │ '1150750.04 ± 49.95' │ '854 ± 0.55%' │ '869' │ 848
│ 3 │ 'effect Exit.fail' │ '1169452.22 ± 0.67%' │ '1134950.04 ± 349.88' │ '863 ± 0.60%' │ '881' │ 856
└─────────┴──────────────────────┴──────────────────────┴───────────────────────┴────────────────┴───────────────┴─────────┘
23 changes: 14 additions & 9 deletions packages/benchmark/src/factories/Ok.log
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
> rustresult Ok:
RustlikeResult { _type: 'ok', _value: 1, _error: undefined }
RustlikeResult {
_type: 'ok',
_value: 1,
_error: undefined,
_symbol: Symbol(rust_result)
}

> neverthrow ok:
Ok { value: 1 }
Expand All @@ -11,11 +16,11 @@ Ok { value: 1 }
{ _id: 'Exit', _tag: 'Success', value: 1 }

Loop N: 100,000
┌─────────┬─────────────────────────┬─────────────────────┬─────────────┬────────────────┬───────────────┬─────────┐
│ (index) │ task │ mean (ns) │ median (ns) │ mean (op/s) │ median (op/s) │ samples │
├─────────┼─────────────────────────┼─────────────────────┼─────────────┼────────────────┼───────────────┼─────────┤
│ 0 │ 'rustresult Ok' │ '405076.67 ± 0.54%' │ '381500.01' │ '2511 ± 0.49%' │ '2621' │ 2469
│ 1 │ 'neverthrow ok' │ '273384.09 ± 0.56%' │ '253700.02' │ '3752 ± 0.48%' │ '3942' │ 3658
│ 2 │ 'effect Effect.succeed' │ '698827.05 ± 0.52%' │ '700500.01' │ '1445 ± 0.49%' │ '1428' │ 1431
│ 3 │ 'effect Exit.succeed' │ '694094.11 ± 0.52%' │ '696500.06' │ '1454 ± 0.49%' │ '1436' │ 1441
└─────────┴─────────────────────────┴─────────────────────┴─────────────┴────────────────┴───────────────┴─────────┘
┌─────────┬─────────────────────────┬─────────────────────┬─────────────────────┬────────────────┬───────────────┬─────────┐
│ (index) │ task │ mean (ns) │ median (ns) │ mean (op/s) │ median (op/s) │ samples │
├─────────┼─────────────────────────┼─────────────────────┼─────────────────────┼────────────────┼───────────────┼─────────┤
│ 0 │ 'rustresult Ok' │ '464204.64 ± 0.65%' │ '442699.91' │ '2197 ± 0.55%' │ '2259' │ 2155
│ 1 │ 'neverthrow ok' │ '284503.50 ± 0.74%' │ '261500.12' │ '3637 ± 0.54%' │ '3824' │ 3515
│ 2 │ 'effect Effect.succeed' │ '714974.62 ± 0.61%' │ '706799.98' │ '1416 ± 0.56%' │ '1415' │ 1399
│ 3 │ 'effect Exit.succeed' │ '711262.45 ± 0.62%' │ '706349.97 ± 49.95' │ '1424 ± 0.56%' │ '1416' │ 1406
└─────────┴─────────────────────────┴─────────────────────┴─────────────────────┴────────────────┴───────────────┴─────────┘
14 changes: 10 additions & 4 deletions packages/benchmark/src/methods/and.log
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
> rustresult Result.and:
[
RustlikeResult { _type: 'ok', _value: 100, _error: undefined },
RustlikeResult {
_type: 'ok',
_value: 100,
_error: undefined,
_symbol: Symbol(rust_result)
},
RustlikeResult {
_type: 'err',
_value: undefined,
_error: 'error message'
_error: 'error message',
_symbol: Symbol(rust_result)
}
]

Expand All @@ -15,6 +21,6 @@ Loop N: 100,000
┌─────────┬─────────────────────────────┬─────────────────────┬─────────────┬────────────────┬───────────────┬─────────┐
│ (index) │ task │ mean (ns) │ median (ns) │ mean (op/s) │ median (op/s) │ samples │
├─────────┼─────────────────────────────┼─────────────────────┼─────────────┼────────────────┼───────────────┼─────────┤
│ 0 │ 'rustresult Result.and' │ '291635.03 ± 0.36%' │ '277100.09' │ '3459 ± 0.29%' │ '3609' │ 3429
│ 1 │ 'neverthrow Result.and sim' │ '194534.53 ± 0.30%' │ '202000.14' │ '5209 ± 0.33%' │ '4950' │ 5141
│ 0 │ 'rustresult Result.and' │ '318988.00 ± 0.38%' │ '320499.90' │ '3168 ± 0.35%' │ '3120' │ 3135
│ 1 │ 'neverthrow Result.and sim' │ '194788.65 ± 0.32%' │ '201800.11' │ '5207 ± 0.34%' │ '4955' │ 5134
└─────────┴─────────────────────────────┴─────────────────────┴─────────────┴────────────────┴───────────────┴─────────┘
22 changes: 14 additions & 8 deletions packages/benchmark/src/methods/andThen.log
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
> rustresult Result.andThen:
[
RustlikeResult { _type: 'ok', _value: 2, _error: undefined },
RustlikeResult {
_type: 'ok',
_value: 2,
_error: undefined,
_symbol: Symbol(rust_result)
},
RustlikeResult {
_type: 'err',
_value: undefined,
_error: 'error message'
_error: 'error message',
_symbol: Symbol(rust_result)
}
]

> neverthrow Result.andThen:
[ Ok { value: 2 }, Err { error: 'error message' } ]

Loop N: 100,000
┌─────────┬─────────────────────────────┬─────────────────────┬─────────────────────┬────────────────┬───────────────┬─────────┐
│ (index) │ task │ mean (ns) │ median (ns) │ mean (op/s) │ median (op/s) │ samples │
├─────────┼─────────────────────────────┼─────────────────────┼─────────────────────┼────────────────┼───────────────┼─────────┤
│ 0 │ 'rustresult Result.andThen' │ '688856.68 ± 0.14%' │ '682300.09' │ '1453 ± 0.12%' │ '1466' │ 1452
│ 1 │ 'neverthrow Result.andThen' │ '460866.04 ± 0.34%' │ '446949.96 ± 49.83' │ '2180 ± 0.27%' │ '2237' │ 2170
└─────────┴─────────────────────────────┴─────────────────────┴─────────────────────┴────────────────┴───────────────┴─────────┘
┌─────────┬─────────────────────────────┬─────────────────────┬─────────────────────┬────────────────┬───────────────┬─────────┐
│ (index) │ task │ mean (ns) │ median (ns) │ mean (op/s) │ median (op/s) │ samples │
├─────────┼─────────────────────────────┼─────────────────────┼─────────────────────┼────────────────┼───────────────┼─────────┤
│ 0 │ 'rustresult Result.andThen' │ '738685.68 ± 0.19%' │ '729449.99 ± 149.97' │ '1355 ± 0.17%' │ '1371' │ 1354
│ 1 │ 'neverthrow Result.andThen' │ '466934.17 ± 0.34%' │ '452500.10' │ '2152 ± 0.28%' │ '2210' │ 2142
└─────────┴─────────────────────────────┴─────────────────────┴─────────────────────┴────────────────┴───────────────┴─────────┘
14 changes: 7 additions & 7 deletions packages/benchmark/src/methods/err.log
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
[ undefined, 'error message' ]

Loop N: 100,000
┌─────────┬─────────────────────────────┬──────────────────────┬───────────────────────┬─────────────────┬───────────────┬─────────┐
│ (index) │ task │ mean (ns) │ median (ns) │ mean (op/s) │ median (op/s) │ samples │
├─────────┼─────────────────────────────┼──────────────────────┼───────────────────────┼─────────────────┼───────────────┼─────────┤
│ 0 │ 'rustresult Result.err' │ '24746.12 ± 0.09%' │ '24499.89' │ '40601 ± 0.05%' │ '40817' │ 40411
│ 1 │ 'neverthrow Result.err sim' │ '73818.62 ± 0.04%' │ '73799.85' │ '13552 ± 0.03%' │ '13550' │ 13547
│ 2 │ 'effect Exit.err sim' │ '1941183.71 ± 0.67%' │ '1904399.99 ± 100.02' │ '518 ± 0.61%' │ '525' │ 516
└─────────┴─────────────────────────────┴──────────────────────┴───────────────────────┴─────────────────┴───────────────┴─────────┘
┌─────────┬─────────────────────────────┬──────────────────────┬──────────────┬─────────────────┬───────────────┬─────────┐
│ (index) │ task │ mean (ns) │ median (ns) │ mean (op/s) │ median (op/s) │ samples │
├─────────┼─────────────────────────────┼──────────────────────┼──────────────┼─────────────────┼───────────────┼─────────┤
│ 0 │ 'rustresult Result.err' │ '24853.18 ± 0.10%' │ '24500.13' │ '40474 ± 0.06%' │ '40816' │ 40237
│ 1 │ 'neverthrow Result.err sim' │ '74011.99 ± 0.07%' │ '73800.09' │ '13525 ± 0.04%' │ '13550' │ 13512
│ 2 │ 'effect Exit.err sim' │ '2005453.91 ± 1.06%' │ '1934299.95' │ '504 ± 0.87%' │ '517' │ 499
└─────────┴─────────────────────────────┴──────────────────────┴──────────────┴─────────────────┴───────────────┴─────────┘
Loading

0 comments on commit cbc9688

Please sign in to comment.