Skip to content
This repository has been archived by the owner on Nov 15, 2022. It is now read-only.

Implement shuffle query #4

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft

Implement shuffle query #4

wants to merge 5 commits into from

Conversation

webmaster128
Copy link
Member

No description provided.

@webmaster128
Copy link
Member Author

webmaster128 commented Mar 19, 2022

This compares gas consumption between Inverse Riffle Shuffle and Fisher-Yates:

Inverse Riffle Shuffle + ChaCha8Rng

list elements CosmWasm gas1 MGas per list element
1 7900500017 7900.5
5 8731050017 1746.2101
10 10240200017 1024.02
25 21157800017 846.312
50 25306950017 506.139
100 44730150017 447.3015
250 114807900017 459.2316
500 268322550017 536.64514
750 398082450017 530.77655
900 "bad randomness source" "bad randomness source"
1000 "bad randomness source" "bad randomness source"

Fisher-Yates + ChaCha8Rng

list elements CosmWasm gas1 MGas per list element
1 4642350017 4642.35
5 7912650017 1582.53
10 8383050017 838.30505
25 9933300017 397.332
50 15531900017 310.63797
100 23793900017 237.939
250 52775700017 211.1028
500 103547700017 207.0954
750 150906150017 201.20819
900 182277750017 202.53084
1000 199157100017 199.1571

1 See https://github.com/CosmWasm/cosmwasm/blob/main/docs/GAS.md

Contract size

Optimized test contract using cosmwasm/rust-optimizer:0.12.5

  • with Inverse Riffle Shuffle: 566K
  • with Fisher-Yates: 564K

@webmaster128
Copy link
Member Author

And we can save gas and contract size using a non-cryptographically secure RNG:

Fisher-Yates + Xoshiro128PlusPlus

list elements CosmWasm gas MGas per list element
1 4530000017 4530
5 4936200017 987.24005
10 5421300017 542.13007
25 7130400017 285.216
50 9816300017 196.32599
100 15364350017 153.64351
250 36164700017 144.6588
500 70457850017 140.9157
750 104595750017 139.46101
900 124424100017 138.24901
1000 138592950017 138.59294

Contract size

Optimized test contract using cosmwasm/rust-optimizer:0.12.5

  • with Fisher-Yates and ChaCha8Rng: 564K
  • with Fisher-Yates and Xoshiro128PlusPlus: 555K

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant