Mar 25, 10-11 AM (55)
Mar 25, 11-12 PM (41)
Mar 25, 12-1 PM (38)
Mar 25, 1-2 PM (31)
Mar 25, 2-3 PM (26)
Mar 25, 3-4 PM (29)
Mar 25, 4-5 PM (28)
Mar 25, 5-6 PM (9)
Mar 25, 6-7 PM (17)
Mar 25, 7-8 PM (14)
Mar 25, 8-9 PM (12)
Mar 25, 9-10 PM (6)
Mar 25, 10-11 PM (3)
Mar 25, 11-12 AM (0)
Mar 26, 12-1 AM (10)
Mar 26, 1-2 AM (11)
Mar 26, 2-3 AM (1)
Mar 26, 3-4 AM (12)
Mar 26, 4-5 AM (2)
Mar 26, 5-6 AM (8)
Mar 26, 6-7 AM (37)
Mar 26, 7-8 AM (22)
Mar 26, 8-9 AM (33)
Mar 26, 9-10 AM (36)
Mar 26, 10-11 AM (17)
Mar 26, 11-12 PM (23)
Mar 26, 12-1 PM (12)
Mar 26, 1-2 PM (41)
Mar 26, 2-3 PM (25)
Mar 26, 3-4 PM (53)
Mar 26, 4-5 PM (33)
Mar 26, 5-6 PM (17)
Mar 26, 6-7 PM (35)
Mar 26, 7-8 PM (14)
Mar 26, 8-9 PM (8)
Mar 26, 9-10 PM (9)
Mar 26, 10-11 PM (2)
Mar 26, 11-12 AM (8)
Mar 27, 12-1 AM (6)
Mar 27, 1-2 AM (1)
Mar 27, 2-3 AM (7)
Mar 27, 3-4 AM (6)
Mar 27, 4-5 AM (10)
Mar 27, 5-6 AM (2)
Mar 27, 6-7 AM (3)
Mar 27, 7-8 AM (9)
Mar 27, 8-9 AM (23)
Mar 27, 9-10 AM (17)
Mar 27, 10-11 AM (25)
Mar 27, 11-12 PM (20)
Mar 27, 12-1 PM (11)
Mar 27, 1-2 PM (14)
Mar 27, 2-3 PM (42)
Mar 27, 3-4 PM (24)
Mar 27, 4-5 PM (21)
Mar 27, 5-6 PM (21)
Mar 27, 6-7 PM (13)
Mar 27, 7-8 PM (10)
Mar 27, 8-9 PM (14)
Mar 27, 9-10 PM (9)
Mar 27, 10-11 PM (16)
Mar 27, 11-12 AM (22)
Mar 28, 12-1 AM (11)
Mar 28, 1-2 AM (9)
Mar 28, 2-3 AM (3)
Mar 28, 3-4 AM (1)
Mar 28, 4-5 AM (5)
Mar 28, 5-6 AM (2)
Mar 28, 6-7 AM (4)
Mar 28, 7-8 AM (3)
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 (3)
Mar 28, 2-3 PM (1)
Mar 28, 3-4 PM (7)
Mar 28, 4-5 PM (4)
Mar 28, 5-6 PM (11)
Mar 28, 6-7 PM (8)
Mar 28, 7-8 PM (3)
Mar 28, 8-9 PM (4)
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 (2)
Mar 29, 3-4 AM (4)
Mar 29, 4-5 AM (3)
Mar 29, 5-6 AM (0)
Mar 29, 6-7 AM (3)
Mar 29, 7-8 AM (0)
Mar 29, 8-9 AM (0)
Mar 29, 9-10 AM (0)
Mar 29, 10-11 AM (1)
Mar 29, 11-12 PM (3)
Mar 29, 12-1 PM (4)
Mar 29, 1-2 PM (10)
Mar 29, 2-3 PM (9)
Mar 29, 3-4 PM (7)
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 (4)
Mar 29, 10-11 PM (13)
Mar 29, 11-12 AM (2)
Mar 30, 12-1 AM (5)
Mar 30, 1-2 AM (5)
Mar 30, 2-3 AM (3)
Mar 30, 3-4 AM (6)
Mar 30, 4-5 AM (4)
Mar 30, 5-6 AM (6)
Mar 30, 6-7 AM (13)
Mar 30, 7-8 AM (22)
Mar 30, 8-9 AM (29)
Mar 30, 9-10 AM (16)
Mar 30, 10-11 AM (31)
Mar 30, 11-12 PM (21)
Mar 30, 12-1 PM (12)
Mar 30, 1-2 PM (23)
Mar 30, 2-3 PM (13)
Mar 30, 3-4 PM (13)
Mar 30, 4-5 PM (20)
Mar 30, 5-6 PM (10)
Mar 30, 6-7 PM (29)
Mar 30, 7-8 PM (11)
Mar 30, 8-9 PM (7)
Mar 30, 9-10 PM (16)
Mar 30, 10-11 PM (3)
Mar 30, 11-12 AM (9)
Mar 31, 12-1 AM (12)
Mar 31, 1-2 AM (14)
Mar 31, 2-3 AM (6)
Mar 31, 3-4 AM (9)
Mar 31, 4-5 AM (7)
Mar 31, 5-6 AM (4)
Mar 31, 6-7 AM (27)
Mar 31, 7-8 AM (24)
Mar 31, 8-9 AM (16)
Mar 31, 9-10 AM (18)
Mar 31, 10-11 AM (19)
Mar 31, 11-12 PM (14)
Mar 31, 12-1 PM (27)
Mar 31, 1-2 PM (38)
Mar 31, 2-3 PM (27)
Mar 31, 3-4 PM (9)
Mar 31, 4-5 PM (9)
Mar 31, 5-6 PM (23)
Mar 31, 6-7 PM (21)
Mar 31, 7-8 PM (10)
Mar 31, 8-9 PM (5)
Mar 31, 9-10 PM (9)
Mar 31, 10-11 PM (2)
Mar 31, 11-12 AM (7)
Apr 01, 12-1 AM (8)
Apr 01, 1-2 AM (13)
Apr 01, 2-3 AM (2)
Apr 01, 3-4 AM (5)
Apr 01, 4-5 AM (3)
Apr 01, 5-6 AM (7)
Apr 01, 6-7 AM (22)
Apr 01, 7-8 AM (20)
Apr 01, 8-9 AM (7)
Apr 01, 9-10 AM (16)
Apr 01, 10-11 AM (15)
2,034 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.