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

parameter selection #14

Open
whyrusleeping opened this issue Aug 14, 2018 · 0 comments
Open

parameter selection #14

whyrusleeping opened this issue Aug 14, 2018 · 0 comments

Comments

@whyrusleeping
Copy link
Member

There are several parameters in the hamt that we can tweak depending on what our desired outcomes are. Let's start by brainstorming the metrics, then we can build benchmarks to check the metrics for any given set of parameters.

First, the parameters we have:

  • Tree width.
    • The size of the fanout at each layer
    • Currently 256, is 32 in the original HAMT designs. Must be a power of 2.
  • arrayWidth
    • the number of elements that get bundled together when a collision happens within a layer.
    • currently 3
    • higher numbers result in denser trees

Next, metrics we would like to see:

  • Average tree density (values per node)
  • Space overhead of the structure (total serialized size of all nodes / size of keys+values)
  • average storage delta size for {a single write, 100 writes, n writes}
    • If i do a single 'Set' on a large tree, how much data do we have to rewrite to bubble up the changes?
  • Write performance
    • time to put N nodes into an empty tree
    • time to put N nodes into a tree of size M
    • time to update a single value in a tree of size M
  • Read performance
    • Read of a random value
    • iterate through all values
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

No branches or pull requests

1 participant