Об этом проекте
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 без выделений имеет решающее значение.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.