Faslinq 1.0.5

.NET 5.0 .NET Standard 2.0
Install-Package Faslinq -Version 1.0.5
dotnet add package Faslinq --version 1.0.5
<PackageReference Include="Faslinq" Version="1.0.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Faslinq --version 1.0.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Faslinq, 1.0.5"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Faslinq as a Cake Addin
#addin nuget:?package=Faslinq&version=1.0.5

// Install Faslinq as a Cake Tool
#tool nuget:?package=Faslinq&version=1.0.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Faslinq

Documentation

High-Performance Linq-Like extension methods for arrays and List<T> that avoid unnecessary allocations.

This is nowhere near ready for production, but I was recently reading about how Linq does allocations all over the places as well as multiple enumerations and that marshalling List<T> through IEnumerable<T> causes Enumerators that live in the stack to be pushed to the heap and thus cause more garbage collection. The solution is to use List<T> whenever possible and T[] to avoid unnecessary heap allocations.

I also was thinking about typical use cases, such as Where().Select()[.Take()] chains that are so common and created new "combo" extension methods like SelectWhere, SelectTake, SelectWhereTake, etc that use a single loop to do all the work.


List<TData> data = GetFromSource<TData>();

var result = data.Where(d => d.Prop1 == 1).Select(d => (d.Prop1, d.Prop2)).Take(10).ToList();

// becomes

var result = data.SelectWhereTake(10, d => d.Prop1 == 1, d => (d.Prop1, d.Prop2));
Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows
.NET Core netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.0 netstandard2.1
.NET Framework net461 net462 net463 net47 net471 net472 net48
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen40 tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

  • .NETStandard 2.1

    • No dependencies.
  • net5.0

    • No dependencies.
  • net6.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Faslinq:

Repository Stars
NetFabric/LinqBenchmarks
Benchmarking LINQ and alternative implementations
Version Downloads Last updated
1.0.5 300 10/6/2021
1.0.0 183 10/6/2021