Skip to content

v0.4.2

Latest

Choose a tag to compare

@github-actions github-actions released this 13 Oct 13:01
7d89465
  • Fewer allocations when reading lists of primitives. A List<T> of int, long, decimal, double, bool, Guid, DateTime and the other primitive types used to be read element by element into a List<object>, boxing each one, and then copied into the real list. When every element carries the type's own token it is now read straight into a List<T>. For 1,000 elements, a List<int> allocates 8,736 B instead of 45,048 B and a List<decimal> 33,264 B instead of 65,048 B. A list with anything else in it (another width, a null, damaged bytes) is finished by the previous code, so the result, or the exception, is the same as before; this is checked against the old path for 15 element types as root and member, plus 600 seeded damaged payloads.
  • A list read this way is trimmed when it is longer than 64 elements and growth left it with spare capacity, so it does not hold up to twice its content.
  • SECURITY.md now lists 0.4.x as the supported line.
  • README and docs/benchmarks.md are re-measured. The benchmark corpus has no primitive-list member, so the tables show no change from this release; only the noisy cells moved.
  • No change to the wire format or to the public API.

Package: https://www.nuget.org/packages/DuraIT.FastBinaryJson/0.4.2