Skip to content

Optimize list materialization across element types - #11

Merged
skuirrels merged 1 commit into
mainfrom
feature/list-materialization-all-types
Aug 1, 2026
Merged

Optimize list materialization across element types#11
skuirrels merged 1 commit into
mainfrom
feature/list-materialization-all-types

Conversation

@skuirrels

@skuirrels skuirrels commented Aug 1, 2026

Copy link
Copy Markdown
Owner

What changed

  • add cached typed materializers for previously boxed List<T> fallback paths
  • preserve the established specialized fast paths for int, float, double, and decimal
  • retain natural object materialization for nested/reference element types
  • preserve converted enum semantics for enum and nullable-enum LIST values
  • add regression coverage for pre-sized List<long> and nullable long values
  • add deterministic nullable-enum LIST regression coverage
  • add a 16-case BenchmarkDotNet matrix covering nullable numerics, nested lists, and fixed arrays

Why

Generic LIST and ARRAY materialization previously fell through IList.Add(object?), boxing value-type elements and increasing allocations. The typed strategy removes that per-element boxing without routing established specialized types through an extra interface dispatch.

Evidence

  • targeted reader/type tests: 98/98 on .NET 8 and .NET 10
  • full test suite: 7,024/7,024 on .NET 8 and .NET 10
  • Release solution build succeeded
  • exact 1.5.5.3 fork packages validated and consumer-smoke-tested on .NET 8 and .NET 10
  • 16-case before/after benchmark matrix found no observed regressions
  • List<long>: 17.80 ms to 13.97 ms; 57.23 MB to 20.60 MB
  • List<long?>: 21.39 ms to 17.87 ms; 63.33 MB to 35.86 MB
  • List<DateTime>: 41.02 ms to 32.22 ms; 57.23 MB to 20.60 MB
  • List<Guid>: 28.94 ms to 23.85 ms; 81.64 MB to 32.81 MB

Release

Intended for stable fork release v1.5.5.3 after hosted checks pass.

@skuirrels
skuirrels force-pushed the feature/list-materialization-all-types branch from d69b0ff to 2894aca Compare August 1, 2026 16:32
@skuirrels
skuirrels merged commit f4e96b4 into main Aug 1, 2026
8 of 9 checks passed
@skuirrels
skuirrels deleted the feature/list-materialization-all-types branch August 1, 2026 16:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant