jackmott / LinqFaster

Linq-like extension functions for Arrays, Span<T>, and List<T> that are faster and allocate less.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fold FastLinq package into this one?

ndrwrbgs opened this issue · comments

Hey @jackmott,

I starred this repo a while ago when I made https://github.com/ndrwrbgs/FastLinq as it was the most popular alternative. It's possible for both libraries to exist concurrently, but their goals are so similar that I'd be interested in offering 1 solution.

If you have some time, could you look over the ReadMe.md, which explains the theory behind the optimizations I made (specifically avoiding IEnumerable information loss) [or check out the milestones for the planned work https://github.com/ndrwrbgs/FastLinq/milestones] and if you think

  • The overlap is enough to conflate packages
  • The overlap is only in the goal, but the approaches are different enough to keep separate

This will help me to know where to invest in the future :)

Note that the note at the top is related to dotnet/BenchmarkDotNet#155

Thanks!

I think the key thing that makes them different enough to not combine is that FastLinq appears to maintain the lazy evaluation properties of regular Linq, while LinqFaster does away with lazy evaluation in exchange for raw performance. Instead offering workarounds for common patters like "whereselect" for example.

Also keep an eye on some of the latest .NET Core optimizations, since they are doing some similar things to you, I believe.

Also keep an eye on some of the latest .NET Core optimizations, since they are doing some similar things to you, I believe

They definitely are, but I work at a big company that likes to use old technology, so my team won't be getting those any time soon :( Fortunately, those .NET optimizations are being influenced by projects like ours :)

Thanks for your feedback, we'll continue as separate optimization tracks!