Ошибки:
1. В каждом тесте лучше передавать массивы через аргументы, а не словарем - это тоже немного влияет
2. Циклы внутри не нужны - сам фреймворк запускает это все множество раз под капотом
вопрос почему
Разные версии, разные реализации. Мы исходный код платформы не знаем.
Тем более, на скорость могут повлиять разные факторы:
- Локальность кэша
- Загруженность системы
- Работа ОС (переключение контекста, свапинг)
на не больших массивах, использование которых в реальной жизни крайне редко.
Это откуда такие данные?
- Enumerable с 1 элементом
- Результат фильтрации выбрал только 2-3 штуки
- Сериализация примитивных (и не только) типов
Я вообще молчу, что
stackalloc
надо вызывать с маленьким размером, а работать с ним через
Span
UPD: запустил бенчмарк у себя и получил примерно такие же результаты. Система: AMD Ryzen 5, Ubuntu 22.04, 16 GB RAM
Предполагаю, что причина в следующем:
1. .NET 8 вышел только недавно и нет достаточного кол-ва патчей
2. Платформа сейчас больше ориентируется на Web и на такие моменты, как оптимизация копирования, времени уделяется мало
P.S. скорее причина в 1