perf(cbor): for encoding numbers, bigints, and dates #6214
+32
−13
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request offers performance improvements to the encoding of numbers, BigInts and dates into the cbor format. The current version of cbor appears to beat msgpack in small numbers but perform worse with larger numbers. These changes cause cbor to have the same performance for small numbers and better performance for larger numbers. Beating msgpack in all ranges.
I did try similar changes with Uint8Array and Arrays, but Arrays did worse overall. For Uint8Arrays, I was able to get a performance boost for small lengths of data, but very easily worse for large lengths of data. There was also a breaking change with encoding Uint8Arrays for one to get that performance boost.
Benchmark Source Code
std/cbor/deno.json
std/bench
Benchmark Results