Есть ли сравнения производительности NET Framework и Core каких-либо операций (пополнение словарей, списков, арифметики с числами и т.д.) в Windows, а также сравнение производительности Core в Windows и Linux?
Здравствуйте, Passerby, Вы писали:
P>Есть ли сравнения производительности NET Framework и Core каких-либо операций (пополнение словарей, списков, арифметики с числами и т.д.) в Windows, а также сравнение производительности Core в Windows и Linux?
я недавно сравнивал NET FW, NET Core 2.2, NET Core 3.1, Mono без LLVM и с LLVM.
Производительность чего именно интересует?
1.
Cинхронизация в многопотоке сильно медленнее в Net Framework чем в Net Core. Например задержки от await в NET FW 4.8 в четыре раза больше чем в NET Core
Так же .NET Core в линуксе медленее чем в Windows. те же задержки от await в линуксе в два раза больше чем в Windows.
2.
Числодробительные однопоточные задачи (Сортировка, SHA и gzip) в NET FW 4.8 не очень хуже чем в net core (20-30 процентов). причем я сравнивал не оптимизированные реализации в нэйтив бинарниках из NET Core (они самые быстрые из всего), а брал an open source исходники cортировки, SHA и gzip на С#. Для точности.
LLVM в моно 5 и 6 чуть чуть быстрее чем не только NET FW 4.8 но и NET Core 2.2 (процентов на 10)
В сентябре MS выкатил Core 3.0 и вернул себе эти 10%.
Четыре рантайма в Windows. Пять рантаймов в линукс. Считаем 5.
Каждый тест — это 50 секунд.
умножаем 50*5*11*5=13750 секунд или почти четыре часа.
В ажуре лимит 6 часов. скорее всего не влезет. Допустим если бы влезло что с этими тоннами чисел потом делать?
Итого
если брать однопоточные операции то списки юзаются в сортировке, SHA и gzip. Внутри словарей тоже списки.
Так что пункт 2 из моего предыдущего ответа на 99,9 процентов будет справедливо и для твоего недовопроса если предположить что речь идет только об однопоточных сценариях.
P.S. забыл еще SortedList. И несколько readonly-коллекций
P.P.S
Единственное что имеет смысл сравнивать, но это я просто знаю потому что должен, это разные реализации SortedSet и SortedDictionary. Они всегда были разные. Но
Их настолько режко используют что непонятно зачем.
Между Core/Framework/Mono делают выбор не из за производительности.