Об этом проекте

ZLinq — это высокопроизводительная библиотека LINQ с нулевым выделением памяти для платформ .NET (netstandard2.0, 2.1, net8, net9) и игровых движков, таких как Unity и Godot. Она предоставляет структуру `ValueEnumerable<T>`, которая устраняет выделения памяти в цепочках методов, достигая лучшей производительности, чем стандартный LINQ. Ключевые особенности включают: - **99% совместимость** с LINQ из .NET 10, включая новые операторы, такие как `Shuffle`, `RightJoin`, `LeftJoin`, `Sequence` и `InfiniteSequence`. - **LINQ для Span**: Полная поддержка операций с `Span<T>` с использованием `allows ref struct` из .NET 9/C# 13. - **LINQ для SIMD**: Автоматическое ускорение SIMD для поддерживаемых числовых типов (например, `int`, `float`, `double`) с `SumUnchecked` для максимальной производительности. - **LINQ для деревьев**: Встроенная поддержка древовидных структур, таких как FileSystem, JSON и GameObject, позволяющая выполнять LINQ-запросы к иерархическим данным. - **Замена без изменений кода**: Опциональный генератор исходного кода (`ZLinq.DropInGenerator`) для автоматического ускорения всех методов LINQ без изменения кода. Использование простое: добавьте `AsValueEnumerable()` к существующим коллекциям, чтобы начать цепочки методов ZLinq. Библиотека проходит более 9000 тестов из System.Linq.Tests в dotnet/runtime, что гарантирует надежность. Она также включает утилиты, такие как `ToArrayPool` для материализации без выделений и `CopyTo` для избежания выделений коллекций. Хотя цепочки методов возвращают разные типы (что предотвращает переназначение), на практике это редко является проблемой. ZLinq идеально подходит для приложений, критичных к производительности, таких как игры, где LINQ без выделений имеет решающее значение.