|
Микробенчмарки в .Net
|
|||
---|---|---|---|
#18+
Я джавист. И в нашей среде есть решение для микробенчмарков, разработанное энтузиастами - JMH . Оно очень крутое. И не дает заоптимизировать код бенчмарка, и JIT греет, и амортизирует накладные расходы правильно. В общем, очень крутая штука, которой можно качественно измерять что угодно, вплоть до стоимости конкретных чтений/записей. Сейчас мне надо написать быстрый код на .Net, и мне надо провести ряд экспериментов в критичных участках кода. Например, что будет быстрее - записать int по байту в поток, или же записать в поток один раз через BitConverter. Или - записать данные в поток одним проходом, аллоцировав для этого несколько дополнительных объектов, или же записать часть данных, а потом сделать пару Seek в потоке, но без аллокаций. Или понять, насколько дорого боксинг/анбоксинг и приведение типов через указатели. Ну и т.д.. Есть ли в .Net что-то аналогичное JMH в Java для проведения честных микробенчмарков? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2014, 00:27 |
|
Микробенчмарки в .Net
|
|||
---|---|---|---|
#18+
cdtyjv, лично я самостоятельно делаю замеры с помощью класса Stopwatch . В то же время перед мной никогда не стояла задача делать это массово и максимально надежно. Посмотри следующие решения: BenchmarkDotNet + статья-введение ; фреймворк от Джона Скита. В его библиотеке NodaTime можно посмотреть пример использования ; MeasureIt ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2014, 04:44 |
|
|
start [/forum/topic.php?fid=20&fpage=116&tid=1402788]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 127ms |
0 / 0 |