Open djkoloski opened 11 months ago
I'm really happy about this plan to improve the benchmarks! :star2: :clap:
Document exactly which invariants crates are allowed to rely on. This encompasses data ranges and valid values; anything outside of the documented invariants are off-limits.
Strongly agree, but do be sure to define the phrase "rely on." I see a distinction between crashing/erroring if the invariant is broken and merely pessimizing the performance/size. For reference, bitcode
hints are of the latter category (if you're wrong, you haven't broken anything except your bandwidth costs).
Make the benchmarks more comprehensive. If crates are able to turn a benchmark into a memcpy war, then their punishment will be more difficult schemas. This should be the preferred route for foiling metagaming.
Yes please, but do note there is also a compression war going on :wink: :crossed_swords:
Compression algorithms will happily rely on any invariant they can detect, so please either remove those invariants or make them more realistic:
Finally, don't forget to time the compression!
Allow some minor optimizations. Anything that only requires a little work is OK. My unhelpful metric would be "as much help as you can get from five minutes in a text chat".
That is a helpful metric! :heart:
For complex schemas, I'd say five minutes per type would be more scalable :ok_hand:
Some crates are leaving performance on the table because they're not taking advantage of data invariants. For example:
Coming up with a standard for what is and is not admissable for crates to do is important for users to get a realistic view of how they would perform for the majority of users. I think my current position is that we should:
memcpy
war, then their punishment will be more difficult schemas. This should be the preferred route for foiling metagaming.@finnbear wrote up an insightful opinion on the matter: