Harmful collection transformations. Part 1: string to array of chars
An array — the simplest collection. It's just a memory block with elements of one type. Arrays are often used when we need to iterate a collection, to search for elements or transform them. C# and .net evolved, many new collections were introduced, interfaces allowed to create generalized algorithms, LINQ simplified the work of programmers, but we continue to use arrays in inappropriate places and perform excess and sometimes harmful transformations. This post begins a series about collections, their features, performance and design. All posts will contain benchmarks, code examples, my opinion and recommendations.
I want to start with a string, some specific collection of .net.
LINQ: Group by byte
LINQ is a powerful tool for collection (or enumeration) operating. You use functional-like syntax for filtering, grouping, transforming data. All LINQ methods work with common interface IEnumerable<T> and usually methods do not check real type of collection, or data type. Sometimes, if you know the type of collection or generic type, you can optimize code for better performance (like in Any vs Count).
This article will show, how you can speed up grouping by specific key - byte.
LINQ: Any() vs Count
Эта статья началась с обсуждения на Stack Overflow: Why LINQ method Any does not check Count?. Здесь мы сравним производительность методов Any и Count != 0.
LINQ: Any vs Count
This post started from discussion on SO: Why LINQ method Any does not check Count? This article shows a comparison of performance methods Any and Count = 0.