Files
circ/examples
Alex Ozdemir 5f3d2b95fe Split hash-consing into its own crate & reimplement (#134)
I split the hash-consing implementation into its own crate and re-implemented it.

In the new implementation, the table is thread-local. Terms are not Send, but linear terms are.

Decreased used of atomics gives a non-trivial speed-up. I tested on Z#'s sha2 round function, with an exit after IR optimization:

Benchmark #1: ./circ-old third_party/ZoKrates/zokrates_stdlib/stdlib/hashes/sha256/shaRound.zok r1cs
  Time (mean ± σ):     236.2 ms ±  16.1 ms    [User: 223.3 ms, System: 12.4 ms]
  Range (min … max):   221.1 ms … 264.1 ms    11 runs

Benchmark #2: ./circ-new third_party/ZoKrates/zokrates_stdlib/stdlib/hashes/sha256/shaRound.zok r1cs
  Time (mean ± σ):     141.8 ms ±  13.1 ms    [User: 131.3 ms, System: 10.0 ms]
  Range (min … max):   125.4 ms … 160.4 ms    18 runs

Summary
  './circ-new third_party/ZoKrates/zokrates_stdlib/stdlib/hashes/sha256/shaRound.zok r1cs' ran
    1.67 ± 0.19 times faster than './circ-old third_party/ZoKrates/zokrates_stdlib/stdlib/hashes/sha256/shaRound.zok r1cs'
2023-01-17 02:17:58 -08:00
..
2022-11-01 23:46:08 -04:00
2021-11-30 13:26:25 -08:00
2022-12-25 20:53:27 -08:00
2023-01-06 09:11:27 -08:00