这个项目能做什么
ZLinq 是一个高性能、零分配的 LINQ 库,适用于 .NET 平台(netstandard2.0、2.1、net8、net9)以及 Unity 和 Godot 等游戏引擎。它提供了基于结构体的 `ValueEnumerable<T>`,消除了方法链中的分配,性能优于标准 LINQ。主要特性包括:
- **99% 兼容** .NET 10 的 LINQ,包括 `Shuffle`、`RightJoin`、`LeftJoin`、`Sequence` 和 `InfiniteSequence` 等新操作符。
- **LINQ to Span**:使用 .NET 9/C# 13 的 `allows ref struct` 全面支持 `Span<T>` 操作。
- **LINQ to SIMD**:对支持的数值类型(如 `int`、`float`、`double`)自动进行 SIMD 加速,并提供 `SumUnchecked` 以获得最大性能。
- **LINQ to Tree**:内置对 FileSystem、JSON 和 GameObject 等树结构的支持,可对层次化数据进行 LINQ 查询。
- **直接替换**:可选源生成器(`ZLinq.DropInGenerator`)可自动加速所有 LINQ 方法,无需修改代码。
用法简单:在现有集合上添加 `AsValueEnumerable()` 即可开始链式调用 ZLinq 方法。该库通过了 dotnet/runtime 的 System.Linq.Tests 中的 9000 多个测试,可靠性有保障。它还包括 `ToArrayPool`(用于无分配物化)和 `CopyTo`(用于避免集合分配)等实用工具。虽然方法链返回不同类型(防止重新赋值),但在实践中很少成为问题。ZLinq 非常适合性能关键型应用(如游戏),在这些场景中无分配 LINQ 至关重要。
评论
0 评分人数达到10人后显示
登录后参与讨论。