Mar 25, 10-11 AM (41)
Mar 25, 11-12 PM (50)
Mar 25, 12-1 PM (37)
Mar 25, 1-2 PM (36)
Mar 25, 2-3 PM (26)
Mar 25, 3-4 PM (29)
Mar 25, 4-5 PM (29)
Mar 25, 5-6 PM (14)
Mar 25, 6-7 PM (13)
Mar 25, 7-8 PM (16)
Mar 25, 8-9 PM (13)
Mar 25, 9-10 PM (7)
Mar 25, 10-11 PM (5)
Mar 25, 11-12 AM (0)
Mar 26, 12-1 AM (7)
Mar 26, 1-2 AM (6)
Mar 26, 2-3 AM (9)
Mar 26, 3-4 AM (9)
Mar 26, 4-5 AM (5)
Mar 26, 5-6 AM (6)
Mar 26, 6-7 AM (25)
Mar 26, 7-8 AM (25)
Mar 26, 8-9 AM (31)
Mar 26, 9-10 AM (46)
Mar 26, 10-11 AM (15)
Mar 26, 11-12 PM (22)
Mar 26, 12-1 PM (14)
Mar 26, 1-2 PM (38)
Mar 26, 2-3 PM (25)
Mar 26, 3-4 PM (52)
Mar 26, 4-5 PM (34)
Mar 26, 5-6 PM (17)
Mar 26, 6-7 PM (37)
Mar 26, 7-8 PM (17)
Mar 26, 8-9 PM (9)
Mar 26, 9-10 PM (8)
Mar 26, 10-11 PM (2)
Mar 26, 11-12 AM (8)
Mar 27, 12-1 AM (8)
Mar 27, 1-2 AM (0)
Mar 27, 2-3 AM (7)
Mar 27, 3-4 AM (5)
Mar 27, 4-5 AM (11)
Mar 27, 5-6 AM (2)
Mar 27, 6-7 AM (2)
Mar 27, 7-8 AM (11)
Mar 27, 8-9 AM (17)
Mar 27, 9-10 AM (21)
Mar 27, 10-11 AM (25)
Mar 27, 11-12 PM (20)
Mar 27, 12-1 PM (10)
Mar 27, 1-2 PM (14)
Mar 27, 2-3 PM (38)
Mar 27, 3-4 PM (18)
Mar 27, 4-5 PM (30)
Mar 27, 5-6 PM (16)
Mar 27, 6-7 PM (18)
Mar 27, 7-8 PM (14)
Mar 27, 8-9 PM (9)
Mar 27, 9-10 PM (10)
Mar 27, 10-11 PM (16)
Mar 27, 11-12 AM (24)
Mar 28, 12-1 AM (13)
Mar 28, 1-2 AM (5)
Mar 28, 2-3 AM (6)
Mar 28, 3-4 AM (2)
Mar 28, 4-5 AM (5)
Mar 28, 5-6 AM (1)
Mar 28, 6-7 AM (3)
Mar 28, 7-8 AM (5)
Mar 28, 8-9 AM (0)
Mar 28, 9-10 AM (0)
Mar 28, 10-11 AM (0)
Mar 28, 11-12 PM (3)
Mar 28, 12-1 PM (1)
Mar 28, 1-2 PM (2)
Mar 28, 2-3 PM (1)
Mar 28, 3-4 PM (2)
Mar 28, 4-5 PM (10)
Mar 28, 5-6 PM (6)
Mar 28, 6-7 PM (11)
Mar 28, 7-8 PM (3)
Mar 28, 8-9 PM (6)
Mar 28, 9-10 PM (2)
Mar 28, 10-11 PM (1)
Mar 28, 11-12 AM (0)
Mar 29, 12-1 AM (4)
Mar 29, 1-2 AM (0)
Mar 29, 2-3 AM (1)
Mar 29, 3-4 AM (4)
Mar 29, 4-5 AM (4)
Mar 29, 5-6 AM (0)
Mar 29, 6-7 AM (1)
Mar 29, 7-8 AM (2)
Mar 29, 8-9 AM (0)
Mar 29, 9-10 AM (0)
Mar 29, 10-11 AM (0)
Mar 29, 11-12 PM (4)
Mar 29, 12-1 PM (3)
Mar 29, 1-2 PM (4)
Mar 29, 2-3 PM (8)
Mar 29, 3-4 PM (15)
Mar 29, 4-5 PM (0)
Mar 29, 5-6 PM (1)
Mar 29, 6-7 PM (1)
Mar 29, 7-8 PM (3)
Mar 29, 8-9 PM (3)
Mar 29, 9-10 PM (3)
Mar 29, 10-11 PM (9)
Mar 29, 11-12 AM (7)
Mar 30, 12-1 AM (5)
Mar 30, 1-2 AM (4)
Mar 30, 2-3 AM (2)
Mar 30, 3-4 AM (5)
Mar 30, 4-5 AM (5)
Mar 30, 5-6 AM (7)
Mar 30, 6-7 AM (9)
Mar 30, 7-8 AM (20)
Mar 30, 8-9 AM (29)
Mar 30, 9-10 AM (18)
Mar 30, 10-11 AM (35)
Mar 30, 11-12 PM (20)
Mar 30, 12-1 PM (11)
Mar 30, 1-2 PM (17)
Mar 30, 2-3 PM (17)
Mar 30, 3-4 PM (14)
Mar 30, 4-5 PM (18)
Mar 30, 5-6 PM (11)
Mar 30, 6-7 PM (26)
Mar 30, 7-8 PM (15)
Mar 30, 8-9 PM (11)
Mar 30, 9-10 PM (16)
Mar 30, 10-11 PM (3)
Mar 30, 11-12 AM (7)
Mar 31, 12-1 AM (8)
Mar 31, 1-2 AM (18)
Mar 31, 2-3 AM (4)
Mar 31, 3-4 AM (9)
Mar 31, 4-5 AM (10)
Mar 31, 5-6 AM (5)
Mar 31, 6-7 AM (17)
Mar 31, 7-8 AM (25)
Mar 31, 8-9 AM (22)
Mar 31, 9-10 AM (20)
Mar 31, 10-11 AM (10)
Mar 31, 11-12 PM (19)
Mar 31, 12-1 PM (17)
Mar 31, 1-2 PM (36)
Mar 31, 2-3 PM (37)
Mar 31, 3-4 PM (14)
Mar 31, 4-5 PM (10)
Mar 31, 5-6 PM (18)
Mar 31, 6-7 PM (19)
Mar 31, 7-8 PM (16)
Mar 31, 8-9 PM (6)
Mar 31, 9-10 PM (8)
Mar 31, 10-11 PM (4)
Mar 31, 11-12 AM (2)
Apr 01, 12-1 AM (13)
Apr 01, 1-2 AM (9)
Apr 01, 2-3 AM (4)
Apr 01, 3-4 AM (4)
Apr 01, 4-5 AM (5)
Apr 01, 5-6 AM (8)
Apr 01, 6-7 AM (15)
Apr 01, 7-8 AM (21)
Apr 01, 8-9 AM (11)
Apr 01, 9-10 AM (16)
Apr 01, 10-11 AM (17)
2,055 commits this week Mar 25, 2020 - Apr 01, 2020
  • Fix stack overflow. This was due to the use of the lazy Map.fold instead of its strict version Map.fold'.
  • Make sure benchmark data does not have unexpected thunks.
  • Define a function that updates the ballot based on the key hash of the voter.
  • Set the heap limit for benchmarks to a very large value.
  • Bump cardano-prelude.
  • Have repeated measurements with revised code
  • Add a note stating that the memory used by running the tally is not much more than the memory required for storing the participants hashes in a map.

generate nix artifacts

Hashing: change the representation of Hash to ShortByteString

Change AbstractHash from being a newtype over Digest to a newtype over ShortByteString and adjust the conversion functions.

The ShortByteString type has efficient Eq & Ord instances whereas the Digest type has very inefficient ones.

Previously the Digest comparison loop was near the top of the profile while doing a bulk sync. This representation change is an improvement of ~7% in the time to validate the whole chain.