Great article!

You should use BenchmarkDotNet to measure time and memory. It does a warm-up to avoid measuring JIT time and automatically discards outliers.

You should also try using Span<T>. You’ll get better performance with easy to maintain code. Check my profile to find some articles on the subject.

Principal Engineer @ Farfetch - Future Retail Lab https://about.me/antao.almada