On Mon, Oct 2, 2017 at 7:00 AM, Jason Cooper <jason@xxxxxxxxxxxxxx> wrote: > > Ahhh, so if I understand you correctly, you'd prefer SHA-256 over > SHA3-256 because it's more performant for your usecase? Well, that's a > completely different animal that cryptographic suitability. In almost all loads I've seen, zlib inflate() cost is a bigger deal than the crypto load. The crypto people talk about cycles per byte, but the deflate code is what usually takes the page faults and cache misses etc, and has bad branch prediction. That ends up easily being tens or thousands of cycles, even for small data. But it does obviously depend on exactly what you do. The Windows people saw SHA1 as costly mainly due to the index file (which is just a "fancy crc", and not even cryptographically important, and where the cache misses actually happen when doing crypto, not decompressing the data). And fsck and big initial checkins can have a very different profile than most "regular use" profiles. Again, there the crypto happens first, and takes the cache misses. And the crypto is almost certainly _much_ cheaper than just the act of loading the index file contents in the first place. It may show up on profiles fairly clearly, but that's mostly because crypto is *intensive*, not because crypto takes up most of the cycles. End result: honestly, the real cost on almost any load is not crypto or necessarily even (de)compression, even if those are the things that show up. It's the cache misses and the "get data into user space" (whether using "read()" or page faulting). Worrying about cycles per byte of compression speed is almost certainly missing the real issue. The people who benchmark cryptography tend to intentionally avoid the actual real work, because they just want to know the crypto costs. So when you see numbers like "9 cycles per byte" vs "12 cycles per byte" and think that it's a big deal - 30% performance difference! - it's almost certainly complete garbage. It may be 30%, but it is likely 30% out of 10% total, meaning that it's almost in the noise for any but some very special case. Linus