Size: a a a

🎄.NET Talks: Evergreen🎄

2020 January 26

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
А Benchmark2 получит от этого преимущество
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Тупо из-за того, что он выполняется вторым
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Бывает и обратная ситуация, когда первому выполняться легче (если тогда ещё не подгружены некоторые типы, и девиртуализация может лучше сработать).
источник

Ln

Larymar neosilator in 🎄.NET Talks: Evergreen🎄
@fvnever
а поясни пожалуйста про прогревания
мне вот не понятно
я как юзер не буду же 20 раз запускать приложение что бы оно не тормозило
так почему нельзя бенчить на холодную
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Далее, нужно мешать JIT'у выбрасывать часть или все твои вычисления как не используемые
источник

DB

Danil Braindead in 🎄.NET Talks: Evergreen🎄
Dr. Friedrich von Never
Ну, банально, type initializer будет вызван в первом месте, где используется тип
Эх, а как реордоринг i/o и процедур учитывать ?
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
По дефолту он может внезапно оказаться умным, и испортит/переоптимизирует какой-нибудь бенч
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Ну и замерять тоже надо умеючи, там куча сложной математики (не просто взять среднее или что-то такое)
источник

A

AleXR in 🎄.NET Talks: Evergreen🎄
Larymar neosilator
@fvnever
а поясни пожалуйста про прогревания
мне вот не понятно
я как юзер не буду же 20 раз запускать приложение что бы оно не тормозило
так почему нельзя бенчить на холодную
То, что запускается раз в год — и тюнить до такой степени нет смысла...
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Многие проблемы решены в BenchmarkDotNet (ну вы же знали, что я к этому клоню, да?), и для всех бенчей нужно использовать его. Ну или какую-то другую библиотеку бенчей, автор которой хоть слышал о перечисленных мной проблемах.
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Larymar neosilator
@fvnever
а поясни пожалуйста про прогревания
мне вот не понятно
я как юзер не буду же 20 раз запускать приложение что бы оно не тормозило
так почему нельзя бенчить на холодную
А это вот уже от целей тестирования зависит
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Обычно мы бенчим горячий серверный код
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Который миллион раз выполняется за время работы сервера
источник

Ln

Larymar neosilator in 🎄.NET Talks: Evergreen🎄
AleXR
То, что запускается раз в год — и тюнить до такой степени нет смысла...
нет конечно
я при включении пк на ходных кешах запускаю приложение
и меня вымораживает что оно притормаживает вначале
и рискну предположить что часть того кода можно было бы чуть лучше пооптимизировать
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Однако, если тебе нужно консольный тул бенчить — то это другой разговор. Там общие законы будут такими же, как я перечислил, но конкретная методика тестирования (и вычисления/исключения влияния JIT) будет иной.
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Larymar neosilator
нет конечно
я при включении пк на ходных кешах запускаю приложение
и меня вымораживает что оно притормаживает вначале
и рискну предположить что часть того кода можно было бы чуть лучше пооптимизировать
А тут у тебя, возможно, вообще в IO проблема и в дисковых кэшах. Нужно это профилировать и тогда уже делать выводы.
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Danil Braindead
Эх, а как реордоринг i/o и процедур учитывать ?
JIT учитывает, вставляя опциональные вызовы тайп инитиалайзеров во все места, где он сомневается, нужны они или нет.
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
И это может заметно влиять на быстродействие микробенчмарков
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Ну вон как у чувака выше
источник

Dv

Dr. Friedrich von Never in 🎄.NET Talks: Evergreen🎄
Где он создаёт строчки из двух байт
источник