core-crypto icon indicating copy to clipboard operation
core-crypto copied to clipboard

refactor: improve keystore [WPB-3374]

Open SimonThormeyer opened this issue 1 year ago • 2 comments

What's new in this PR

Optimizing save() method on may entities.


PR Submission Checklist for internal contributors
  • The PR Title
    • [x] conforms to the style of semantic commits messages¹ supported in Wire's Github Workflow²
    • [x] contains a reference JIRA issue number like SQPIT-764
    • [x] answers the question: If merged, this PR will: ... ³
  1. https://sparkbox.com/foundry/semantic_commit_messages
  2. https://github.com/wireapp/.github#usage
  3. E.g. feat(conversation-list): Sort conversations by most emojis in the title #SQPIT-764.

SimonThormeyer avatar Aug 14 '24 08:08 SimonThormeyer

🐰Bencher

ReportWed, August 21, 2024 at 08:30:38 UTC
Projectcore-crypto
Branchsimon/refactor/improve-keystore
Testbedubuntu-latest
Click to view all benchmark results
BenchmarkLatencyLatency Results
nanoseconds (ns) | (Δ%)
Commit add f(group size)/cs1/mem/1002✅ (view plot)14,070,000.00
Commit add f(group size)/cs1/mem/2✅ (view plot)765,690.00
Commit add f(group size)/cs1/mem/202✅ (view plot)3,435,900.00
Commit add f(group size)/cs1/mem/402✅ (view plot)6,357,700.00
Commit add f(group size)/cs1/mem/602✅ (view plot)9,565,000.00
Commit add f(group size)/cs1/mem/802✅ (view plot)11,656,000.00
Commit add f(number clients)/cs1/mem/1002✅ (view plot)999,600,000.00
Commit add f(number clients)/cs1/mem/2✅ (view plot)776,830.00
Commit add f(number clients)/cs1/mem/202✅ (view plot)79,234,000.00
Commit add f(number clients)/cs1/mem/402✅ (view plot)217,580,000.00
Commit add f(number clients)/cs1/mem/602✅ (view plot)430,200,000.00
Commit add f(number clients)/cs1/mem/802✅ (view plot)685,280,000.00
Commit pending proposals f(group size)/cs1/mem/1002✅ (view plot)113,840,000.00
Commit pending proposals f(group size)/cs1/mem/2✅ (view plot)22,430,000.00
Commit pending proposals f(group size)/cs1/mem/202✅ (view plot)40,866,000.00
Commit pending proposals f(group size)/cs1/mem/402✅ (view plot)55,771,000.00
Commit pending proposals f(group size)/cs1/mem/602✅ (view plot)75,320,000.00
Commit pending proposals f(group size)/cs1/mem/802✅ (view plot)90,537,000.00
Commit pending proposals f(pending size)/cs1/mem/1✅ (view plot)13,730,000.00
Commit pending proposals f(pending size)/cs1/mem/101✅ (view plot)116,250,000.00
Commit pending proposals f(pending size)/cs1/mem/21✅ (view plot)30,715,000.00
Commit pending proposals f(pending size)/cs1/mem/41✅ (view plot)52,652,000.00
Commit pending proposals f(pending size)/cs1/mem/61✅ (view plot)72,525,000.00
Commit pending proposals f(pending size)/cs1/mem/81✅ (view plot)92,055,000.00
Commit remove f(group size)/cs1/mem/1002✅ (view plot)19,263,000.00
Commit remove f(group size)/cs1/mem/2✅ (view plot)546,910.00
Commit remove f(group size)/cs1/mem/202✅ (view plot)2,171,700.00
Commit remove f(group size)/cs1/mem/402✅ (view plot)4,987,500.00
Commit remove f(group size)/cs1/mem/602✅ (view plot)9,769,000.00
Commit remove f(group size)/cs1/mem/802✅ (view plot)13,669,000.00
Commit remove f(number clients)/cs1/mem/1002✅ (view plot)22,142,000.00
Commit remove f(number clients)/cs1/mem/2✅ (view plot)130,830,000.00
Commit remove f(number clients)/cs1/mem/202✅ (view plot)108,700,000.00
Commit remove f(number clients)/cs1/mem/402✅ (view plot)86,174,000.00
Commit remove f(number clients)/cs1/mem/602✅ (view plot)64,348,000.00
Commit remove f(number clients)/cs1/mem/802✅ (view plot)44,170,000.00
Commit update f(group size)/cs1/mem/1002✅ (view plot)130,220,000.00
Commit update f(group size)/cs1/mem/2✅ (view plot)703,140.00
Commit update f(group size)/cs1/mem/202✅ (view plot)26,978,000.00
Commit update f(group size)/cs1/mem/402✅ (view plot)53,006,000.00
Commit update f(group size)/cs1/mem/602✅ (view plot)79,868,000.00
Commit update f(group size)/cs1/mem/802✅ (view plot)105,080,000.00
Count KeyPackage/cs1/mem/1002✅ (view plot)3,822,900.00
Count KeyPackage/cs1/mem/2✅ (view plot)441,020.00
Count KeyPackage/cs1/mem/202✅ (view plot)815,480.00
Count KeyPackage/cs1/mem/402✅ (view plot)1,565,600.00
Count KeyPackage/cs1/mem/602✅ (view plot)2,312,600.00
Count KeyPackage/cs1/mem/802✅ (view plot)3,057,400.00
Create group/cs1/mem✅ (view plot)295,130.00
Decrypt f(msg size)/cs1/mem/10✅ (view plot)246,020.00
Decrypt f(msg size)/cs1/mem/10010✅ (view plot)287,300.00
Decrypt f(msg size)/cs1/mem/2010✅ (view plot)248,940.00
Decrypt f(msg size)/cs1/mem/4010✅ (view plot)258,540.00
Decrypt f(msg size)/cs1/mem/6010✅ (view plot)264,230.00
Decrypt f(msg size)/cs1/mem/8010✅ (view plot)276,030.00
Encrypt f(group size)/cs1/mem/1002✅ (view plot)1,044,100.00
Encrypt f(group size)/cs1/mem/2✅ (view plot)267,900.00
Encrypt f(group size)/cs1/mem/202✅ (view plot)448,560.00
Encrypt f(group size)/cs1/mem/402✅ (view plot)658,350.00
Encrypt f(group size)/cs1/mem/602✅ (view plot)747,160.00
Encrypt f(group size)/cs1/mem/802✅ (view plot)881,700.00
Encrypt f(msg size)/cs1/mem/10✅ (view plot)1,068,600.00
Encrypt f(msg size)/cs1/mem/10010✅ (view plot)1,086,700.00
Encrypt f(msg size)/cs1/mem/2010✅ (view plot)1,081,200.00
Encrypt f(msg size)/cs1/mem/4010✅ (view plot)1,028,600.00
Encrypt f(msg size)/cs1/mem/6010✅ (view plot)1,019,900.00
Encrypt f(msg size)/cs1/mem/8010✅ (view plot)1,356,600.00
Generate KeyPackage f(group size)/cs1/mem/1002✅ (view plot)195,640,000.00
Generate KeyPackage f(group size)/cs1/mem/2✅ (view plot)514,660.00
Generate KeyPackage f(group size)/cs1/mem/202✅ (view plot)22,627,000.00
Generate KeyPackage f(group size)/cs1/mem/402✅ (view plot)65,041,000.00
Generate KeyPackage f(group size)/cs1/mem/602✅ (view plot)108,280,000.00
Generate KeyPackage f(group size)/cs1/mem/802✅ (view plot)151,980,000.00
Join from external commit f(group size)/cs1/mem/1002✅ (view plot)234,680,000.00
Join from external commit f(group size)/cs1/mem/2✅ (view plot)1,466,700.00
Join from external commit f(group size)/cs1/mem/202✅ (view plot)48,443,000.00
Join from external commit f(group size)/cs1/mem/402✅ (view plot)95,262,000.00
Join from external commit f(group size)/cs1/mem/602✅ (view plot)143,330,000.00
Join from external commit f(group size)/cs1/mem/802✅ (view plot)188,490,000.00
Join from welcome f(group size)/cs1/mem/1002✅ (view plot)105,900,000.00
Join from welcome f(group size)/cs1/mem/2✅ (view plot)912,440.00
Join from welcome f(group size)/cs1/mem/202✅ (view plot)21,943,000.00
Join from welcome f(group size)/cs1/mem/402✅ (view plot)42,987,000.00
Join from welcome f(group size)/cs1/mem/602✅ (view plot)64,335,000.00
Join from welcome f(group size)/cs1/mem/802✅ (view plot)85,418,000.00
Mls vs Proteus: add/MLS/mem/1✅ (view plot)784,420.00
Mls vs Proteus: add/MLS/mem/101✅ (view plot)2,155,100.00
Mls vs Proteus: add/MLS/mem/21✅ (view plot)1,063,600.00
Mls vs Proteus: add/MLS/mem/41✅ (view plot)1,363,100.00
Mls vs Proteus: add/MLS/mem/61✅ (view plot)1,602,900.00
Mls vs Proteus: add/MLS/mem/81✅ (view plot)1,953,200.00
Mls vs Proteus: add/Proteus/mem/1✅ (view plot)428,810.00
Mls vs Proteus: add/Proteus/mem/101✅ (view plot)34,897,000.00
Mls vs Proteus: add/Proteus/mem/21✅ (view plot)7,238,800.00
Mls vs Proteus: add/Proteus/mem/41✅ (view plot)14,058,000.00
Mls vs Proteus: add/Proteus/mem/61✅ (view plot)20,801,000.00
Mls vs Proteus: add/Proteus/mem/81✅ (view plot)27,614,000.00
Mls vs Proteus: encrypt/MLS/mem/1✅ (view plot)273,340.00
Mls vs Proteus: encrypt/MLS/mem/101✅ (view plot)371,990.00
Mls vs Proteus: encrypt/MLS/mem/21✅ (view plot)292,190.00
Mls vs Proteus: encrypt/MLS/mem/41✅ (view plot)303,200.00
Mls vs Proteus: encrypt/MLS/mem/61✅ (view plot)309,780.00
Mls vs Proteus: encrypt/MLS/mem/81✅ (view plot)341,380.00
Mls vs Proteus: encrypt/Proteus/mem/1✅ (view plot)174,910.00
Mls vs Proteus: encrypt/Proteus/mem/101✅ (view plot)8,274,100.00
Mls vs Proteus: encrypt/Proteus/mem/21✅ (view plot)1,922,200.00
Mls vs Proteus: encrypt/Proteus/mem/41✅ (view plot)3,436,000.00
Mls vs Proteus: encrypt/Proteus/mem/61✅ (view plot)5,026,500.00
Mls vs Proteus: encrypt/Proteus/mem/81✅ (view plot)6,720,900.00
Mls vs Proteus: remove/MLS/mem/1✅ (view plot)13,887,000.00
Mls vs Proteus: remove/MLS/mem/101✅ (view plot)1,795,900.00
Mls vs Proteus: remove/MLS/mem/21✅ (view plot)11,444,000.00
Mls vs Proteus: remove/MLS/mem/41✅ (view plot)8,996,100.00
Mls vs Proteus: remove/MLS/mem/61✅ (view plot)6,657,300.00
Mls vs Proteus: remove/MLS/mem/81✅ (view plot)4,215,500.00
Mls vs Proteus: remove/Proteus/mem/1✅ (view plot)80,922.00
Mls vs Proteus: remove/Proteus/mem/101✅ (view plot)606,380.00
Mls vs Proteus: remove/Proteus/mem/21✅ (view plot)250,380.00
Mls vs Proteus: remove/Proteus/mem/41✅ (view plot)301,280.00
Mls vs Proteus: remove/Proteus/mem/61✅ (view plot)390,120.00
Mls vs Proteus: remove/Proteus/mem/81✅ (view plot)600,610.00
Mls vs Proteus: update/MLS/mem/1✅ (view plot)695,960.00
Mls vs Proteus: update/MLS/mem/101✅ (view plot)13,898,000.00
Mls vs Proteus: update/MLS/mem/21✅ (view plot)3,480,400.00
Mls vs Proteus: update/MLS/mem/41✅ (view plot)6,141,800.00
Mls vs Proteus: update/MLS/mem/61✅ (view plot)8,680,800.00
Mls vs Proteus: update/MLS/mem/81✅ (view plot)11,426,000.00
Mls vs Proteus: update/Proteus/mem/1✅ (view plot)441,690.00
Mls vs Proteus: update/Proteus/mem/101✅ (view plot)35,175,000.00
Mls vs Proteus: update/Proteus/mem/21✅ (view plot)7,358,600.00
Mls vs Proteus: update/Proteus/mem/41✅ (view plot)14,367,000.00
Mls vs Proteus: update/Proteus/mem/61✅ (view plot)21,176,000.00
Mls vs Proteus: update/Proteus/mem/81✅ (view plot)28,068,000.00

Bencher - Continuous Benchmarking
View Public Perf Page
Docs | Repo | Chat | Help

github-actions[bot] avatar Aug 14 '24 09:08 github-actions[bot]

Codecov Report

Attention: Patch coverage is 99.20635% with 2 lines in your changes missing coverage. Please review.

Project coverage is 79.03%. Comparing base (a6fe3de) to head (9c4f5b4). Report is 22 commits behind head on develop.

Files Patch % Lines
keystore/src/connection/platform/generic/mod.rs 50.00% 2 Missing :warning:
Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #649      +/-   ##
===========================================
+ Coverage    78.90%   79.03%   +0.13%     
===========================================
  Files           99       99              
  Lines        20132    19885     -247     
===========================================
- Hits         15885    15716     -169     
+ Misses        4247     4169      -78     
Files Coverage Δ
keystore/src/entities/mod.rs 87.87% <100.00%> (+11.95%) :arrow_up:
...tore/src/entities/platform/generic/mls/e2ei_crl.rs 94.59% <100.00%> (-0.65%) :arrow_down:
...ies/platform/generic/mls/e2ei_intermediate_cert.rs 95.41% <100.00%> (-0.50%) :arrow_down:
...ntities/platform/generic/mls/encryption_keypair.rs 98.08% <100.00%> (-0.11%) :arrow_down:
...re/src/entities/platform/generic/mls/enrollment.rs 97.36% <100.00%> (+24.56%) :arrow_up:
...s/platform/generic/mls/epoch_encryption_keypair.rs 100.00% <100.00%> (+26.74%) :arrow_up:
...eystore/src/entities/platform/generic/mls/group.rs 76.59% <100.00%> (-5.69%) :arrow_down:
.../entities/platform/generic/mls/hpke_private_key.rs 100.00% <100.00%> (ø)
...re/src/entities/platform/generic/mls/keypackage.rs 100.00% <100.00%> (ø)
...re/src/entities/platform/generic/mls/psk_bundle.rs 100.00% <100.00%> (ø)
... and 5 more

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update a6fe3de...9c4f5b4. Read the comment docs.

codecov-commenter avatar Aug 14 '24 09:08 codecov-commenter

Commit 45022a30473fb4298ab2963630428e73bb774026 references mls_epoch_encryption_keypair table in its message, however the table is called mls_epoch_encryption_keypairs (note the s at the end).

istankovic avatar Aug 20 '24 14:08 istankovic