1
0
Fork 0
mirror of https://github.com/azalea-rs/simdnbt.git synced 2025-08-02 15:36:03 +00:00
an unnecessarily fast nbt decoder
Find a file
2023-09-03 14:17:54 -05:00
benches better spacing in readme 2023-09-03 14:17:54 -05:00
examples use simd for is_plain_ascii 2023-09-03 03:31:23 -05:00
src optimize is_plain_ascii some more 2023-09-03 13:58:01 -05:00
tests optimized converting mutf8 to utf8 2023-09-02 22:12:24 -05:00
.gitignore more silly string optimizations 2023-09-03 03:03:43 -05:00
Cargo.toml release 0.1.1 2023-09-03 14:06:59 -05:00
LICENSE add stuff to Cargo.toml 2023-08-29 23:04:24 -05:00
README.md better spacing in readme 2023-09-03 14:17:54 -05:00

simdnbt

an unnecessarily fast nbt decoder. like seriously you probably don't need this unless you're trying to win benchmarks.

simdnbt currently makes use of simd instructions for two things:

  • swapping the endianness of int arrays
  • checking if a string is plain ascii for faster mutf8 to utf8 conversion

simdnbt might be the fastest nbt decoder currently in existence. however to achieve this silly speed, it takes a couple of shortcuts:

  1. it requires a reference to the original data (to avoid cloning)
  2. it doesn't validate/decode the mutf-8 strings at decode-time

here's a benchmark comparing simdnbt against a few of the other fastest nbt crates (though without actually accessing the data):

simdnbt is ~3x faster than the second fastest nbt crate

and here's a benchmark where it accesses the data and makes it owned:

simdnbt is only about 50% faster than the second fastest in this one