Есть ли сравнения производительности NET Framework и Core
От: Passerby  
Дата: 02.02.20 18:11
Оценка:
Есть ли сравнения производительности NET Framework и Core каких-либо операций (пополнение словарей, списков, арифметики с числами и т.д.) в Windows, а также сравнение производительности Core в Windows и Linux?
Re: Есть кое-что
От: VladCore  
Дата: 03.02.20 04:50
Оценка: 5 (2) +1
Здравствуйте, 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%.
Отредактировано 03.02.2020 6:26 VladCore . Предыдущая версия . Еще …
Отредактировано 03.02.2020 6:25 VladCore . Предыдущая версия .
Отредактировано 03.02.2020 5:56 VladCore . Предыдущая версия .
Отредактировано 03.02.2020 5:54 VladCore . Предыдущая версия .
Отредактировано 03.02.2020 5:44 VladCore . Предыдущая версия .
Отредактировано 03.02.2020 5:15 VladCore . Предыдущая версия .
Отредактировано 03.02.2020 5:00 VladCore . Предыдущая версия .
Отредактировано 03.02.2020 4:55 VladCore . Предыдущая версия .
Re[2]: Есть кое-что
От: Passerby  
Дата: 03.02.20 12:20
Оценка:
Здравствуйте, VladCore,
А работу со словарями и списками не сравнивали?
Re[3]: Есть кое-что
От: VladCore  
Дата: 03.02.20 13:22
Оценка: +1
Здравствуйте, Passerby, Вы писали:

P>Здравствуйте, VladCore,

P>А работу со словарями и списками не сравнивали?

Что именно?

Нет, не сравнивал. Очень много кейсов будет.

Давай посчитаем грубо

Создание, Добавление, удаление, чтение, чтение несуществующего ключа. это 5.

Коллекиций тоже тьма
List, Массив, Dictionary, SortedDictionary, HashSet, SortedSet, BlockingCollection, Concurrent Dictionary, Bag, Queue, Stack: 11

Четыре рантайма в 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 делают выбор не из за производительности.
Re[3]: Есть кое-что
От: Danchik Украина  
Дата: 04.02.20 10:35
Оценка: 3 (1)
Здравствуйте, Passerby, Вы писали:

P>Здравствуйте, VladCore,

P>А работу со словарями и списками не сравнивали?

Вот уже сравнивают

https://habr.com/ru/post/481558/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.