Информация об изменениях

Сообщение Re[9]: почему так медленно? от 11.06.2019 20:39

Изменено 11.06.2019 20:40 alexzzzz

Re[9]: почему так медленно?
Здравствуйте, CodeMonkey, Вы писали:

CM>А в моих замерах — включалось.


У тебя 150-160 пусков GC, которому требуется постоянно увеличивать кучу, помечать объекты живыми, перекидывать их из поколения в поколение (хотя сами объекты в памяти вроде не перемещаются). Процессорному кэшу при этом тоже вряд ли хорошо.

Массив структур же достаточно один раз линейно пробежать. Половина времени тратится на soft page faults, вторая половина на собственно запись полей.

Скачал на попробовать dotTrace. Режим Sampling показывает, что внутри GC от запуска к запуску проводится 60-80% времени. На пользовательский код приходится что-то типа 15% времени.

В Mono оригинальный тест с классами работает на полсекунды быстрее, чем в NET Framework, хотя GC в Mono запускается >220 раз.
Re[9]: почему так медленно?
Здравствуйте, CodeMonkey, Вы писали:

CM>А в моих замерах — включалось.


У тебя 150-160 пусков GC, которому требуется постоянно увеличивать кучу, помечать объекты живыми, перекидывать их из поколения в поколение (хотя сами объекты в памяти вроде не перемещаются). Процессорному кэшу при этом тоже вряд ли хорошо. Объектов в пике 10 миллионов.

Массив структур же достаточно один раз линейно пробежать. Половина времени тратится на soft page faults, вторая половина на собственно запись полей.

Скачал на попробовать dotTrace. Режим Sampling показывает, что внутри GC от запуска к запуску проводится 60-80% времени. На пользовательский код приходится что-то типа 15% времени.

В Mono оригинальный тест с классами работает на полсекунды быстрее, чем в NET Framework, хотя GC в Mono запускается >220 раз.