-
Notifications
You must be signed in to change notification settings - Fork 207
Description
Sha256 is known to be quite slow. There's a new kid in town, Blake3. It's crazy fast, super secure and just better overall.
BRE already supports it:
https://github.com/bazelbuild/remote-apis/blob/39c174e10d224c46b556d8d4615863804d5b2ff6/build/bazel/remote/execution/v2/remote_execution.proto#L1900
Bazel appears to be in the process of supporting it:
bazelbuild/bazel#18658
Micro-bench testing shows it is worth the effort:
https://gist.github.com/allada/6b4321a6487c2888ff73ce1cc0fc86ed
All results are on a 16 core i9 with (no threads):
1GB @ 10:
sha256: 35.546221869s
blake3: 2.346503712s
abs difference: 33.199718157s
% difference r: 1514.86%
% difference i: 6.60%
1MB @ 10_000:
sha256: 34.653737424s
blake3: 2.129524155s
abs difference: 32.524213269s
% difference r: 1627.30%
% difference i: 6.15%
1KB @ 1_000_000:
sha256: 3.714629289s
blake3: 725.049013ms
abs difference: 2.989580276s
% difference r: 512.33%
% difference i: 19.52%
100B @ 1_000_000:
sha256: 453.309362ms
blake3: 113.922135ms
abs difference: 339.387227ms
% difference r: 397.91%
% difference i: 25.13%
This is a significant difference and when things are under high workload, it is often because we are spending so much time hashing. This hash a very high chance of dramatically improving performance of the cas stores.