introduction to the hamt opportunity for t cl
play

Introduction to the HAMT: Opportunity for T cl 2017 Tcl Conference - PowerPoint PPT Presentation

Introduction to the HAMT: Opportunity for T cl 2017 Tcl Conference Don Porter Tcl/Tk Release Manager Hash Maps in Tcl Dictionaries Array variables Name lookups (commands, vars, etc.) Much much more Most make use of


  1. Introduction to the HAMT: Opportunity for T cl 2017 Tcl Conference Don Porter Tcl/Tk Release Manager

  2. Hash Maps in Tcl ● Dictionaries ● Array variables ● Name lookups (commands, vars, etc.) ● Much much more… – Most make use of Tcl_HashTable. ● Customizable

  3. Hash Map – Giant Bucket Array ● Define Hash: Key → index – Efficient – Range evenly distributed over indices Search bucket [ Hash(key) ] for key 2 64 0 …..

  4. Hash Map – Tcl_HashTable Search bucket [ Hash(key) & mask ] for key 2 3 0

  5. Hash Map – Hash Trie Follow Hash( key ) path to leaf storing key 1 0 …..

  6. Hash Map – Hash Trie Eliminate empty buckets and paths 1 0 …..

  7. Hash Map – Hash Trie Store hashes – shorten paths w/o branches 1 0

  8. Hash Map – Hash Trie Store node IDs – shorten paths w/o branches 1 0

  9. Hash Array-Map Trie (HAMT) Structure nodes as array maps 0011 0110 1100 1100

  10. Array Map Encoding ● Two bits encoding bucket leaf children – Bit n is set → child n is a bucket ● Hash and leaf pointer are stored in array ● Two bits encoding subnode children – Bit n is set → child n is a subnode ● Pointer to subnode is stored in array

  11. Removal Operation 1 0 …..

  12. Removal Operation – Tcl_HashTable (Destructive) 2 3 2 3 0 0 →

  13. Removal Operation – HAMT (non-destructive) OLD 0011 0110 1100 1100 0110 NEW

  14. IMMUTABILITY ● Values as Read-only structures ● Matches value semantics of Tcl ● Alternative to Copy on Write – CoW is a discipline to implement immutable values out of mutable foundations

  15. ...on Steroids ● Presented as binary tree – Two two-bit encoding maps per node – Easy to draw and explain – Inessential ● Implemented as 64-ary tree – Two 64-bit encoding maps per node – Shallow, wide trees → few hops in lookup – Depth of 11 covers entire 16 exbibyte capacity

  16. Demo: dict vs hamt % set data [lmap _ [lrepeat 20000 {}] tcl::mathfunc::rand] % set d [dict create {*}$data] % time {foreach {k v} $data {set d [dict remove $d $k]}} -> 23839420 microseconds per iteration % set h [hamt create {*}$data] % time {foreach {k v} $data {set h [hamt remove $h $k]}} -> 77113 microseconds per iteration % set d [dict create {*}$data] % time {foreach {k v} $data {dict unset d $k}} -> 28610 microseconds per iteration

  17. The Enemy

  18. Merge Demo % time {set d [dict merge $d1 $d2]} → 681783 microseconds per iteration % time {dict merge $d $d} → 1032838 microseconds per iteration % time {dict merge $d $d1} → 927085 microseconds per iteration % time {set h [hamt merge $h1 $h2]} → 294936 microseconds per iteration % time {hamt merge $h $h} → 65 microseconds per iteration % time {hamt merge $h $h1} → 218641 microseconds per iteration

  19. More dict vs hamt ● For one hashmap, hamt uses more memory. ● For set of related hashmaps, will use less. ● Operation speeds are competitive. (oom) ● Avoids copy catastrophe by design ● Still prototype quality – Known improvement avenues ● Immutability benefits...

  20. Immutable Hashmap Benefits ● Read-only values share easily – Think “threads” ● Keep useful checkpoints – Think built-in command set of an interp. ● Controlled teardowns – Think namespace delete ● Caching and Epochs – No epoch for something that does not change ● Scaling?

  21. How can I try it? ● Branch dgp-refactor in the Tcl fossil repository. – https://core.tcl.tk/tcl ● [hamt info] reports interesting details. ● Comments welcome.

  22. Relaxed Radix Balance (RRB) Tree ● HAMT : Hashmap :: RRB : Sequence – Think “list” – Think “string” (list of characters) ● Foundation of the Clojure Vector ● Stay Tuned!

  23. Conclusions ● Protoype HAMT implementation underway – Basic functions complete. ● Initial testing shows promise – Not yet a clear failure. ● Immutable structures are useful tools. ● Other immutable structure opportunities. ● Further work is needed.

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend