mirror of
https://github.com/vee1e/flatbuffers.git
synced 2026-09-02 02:07:25 +00:00
Improves unpack performance for vectors by allowing the compiler to vectorize flatbuffers::Vector to std::vec::Vec conversions, using the unstable trusted_len feature. Internally, enables an optimization in src/alloc/vec/spec_extend.rs: Previously, unpacking a flatbuffers::Vector called SpecExtend::extend_desugared fallback, which inhibits vectorization (due to a branch before every element move). Declaring TrustedLen allows SpecExtend::extend_trusted, which LLVM can often vectorize into a memcpy. For [ubyte] vectors in particular, this turns a rather expensive loop of 'mov BYTE PTR [rax+r13*1], bpl' into a `call memcpy`. |
||
|---|---|---|
| .. | ||
| flatbuffers | ||
| flexbuffers | ||
| reflection | ||