I’ve recently discovered this project, which assuming it works as advertised (which I think wasn’t really tested yet, since it seems to be a pretty new repo) sounds like a pretty good library to add into your toolbox.
For those that do not know, LINQ is basically a query language over collections in C#, that allows you (from the top of my head) to do stuff like
someList.Where(x => x.value < 10).OrderBy(x => x.priority).Select(x => x.name)
which would give you a IEnumerable list with names of elements where value is smaller than 10, ordered by priority.
However, using LINQ in performance critical code, such as per-frame Updates, is not really a good idea because it unfortunately does generate a lot of garbage (allocations for GC to collect). Having a version that doesn’t allocate anything sounds awesome, assuming you are a fan of LINQ.
What are your thoughts? For me, it sounds like something really useful. While it’s not really that difficult to avoid LINQ, I’m a fan of the simplicity and descriptive nature of the syntax, and not having to avoid it would be great. It does seem there are quite a few issues starting to pop up, but it’s definitely a project that could be worth it to follow.
Honestly, I don’t really see a reason why anyone would need to be running LINQ every single frame, even if it performed better. I like the idea that this performs better, but that specific use case I don’t see a benefit over using the builtin solution, since IMO you shouldn’t really ever need to do that anyways.
I can imagine a few use cases, sorting or selecting or filtering a list is something that does pop up from time to time. It’s nothing major, and definitely not a must have.
From the top of my head it can be finding a closest enemy to the player, while it doesnt have to be done every frame, you’d want to do it often enough.
Sure, you can just for loop it (as with any LINQ calls), but I’d say that LINQ is more readable.