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

Сообщение Re: dotTrace и compiled Regex от 30.08.2016 12:51

Изменено 30.08.2016 12:54 Anatoly Nikitin

Здравствуйте, Sharov,

В Вашем случае, для замера времени выполнения конкретного метода можно пользоваться простым Stopwatch'ем, а не профайлером. Профайлер неизбежно вносит погрешность в измерения и его использование оправдано, например, если Вас интересует распределение времени выполнения по дочерним вызовам, либо если Вы хотите измерить время сразу для нескольких методов.

Если всё же использовать dotTrace для сравнения времени выполнения одного метода, то для выбора режима профилирования нужно понимать следующее:
— точность измерения времени выполнения метода в режиме Tracing уменьшается по мере увеличения общего количества вызовов в поддереве этого метода. Это связано с тем, что в режиме Tracing профайлер выполняет некоторые действия на каждый вызов метода, и при этом он лишь частично компенсирует эту погрешность.
— точность измерения времени выполнения метода в режиме Sampling увеличивается по мере увеличения измеряемого времени выполнения. Это связано со статистическим характером сэмплинга: dotTrace сэмплирует каэжый поток с частотой 100 сэмплов/сек.
— режим Line-by-Line вносит наибольшую инструментальную погрешность в измерения, так как происходит дополнительная

В итоге, если в поддереве исследуемого метода не происходит большого количества вызовов других методов (например, их меньше 1000), то можно пользоваться Tracing'ом. Если же вызовов много, то лучше увеличить количество итераций цикла и использовать Sampling.
Здравствуйте, Sharov,

В Вашем случае, для замера времени выполнения конкретного метода можно пользоваться простым Stopwatch'ем, а не профайлером. Профайлер неизбежно вносит погрешность в измерения и его использование оправдано, например, если Вас интересует распределение времени выполнения по дочерним вызовам, либо если Вы хотите измерить время сразу для нескольких методов.

Если всё же использовать dotTrace для сравнения времени выполнения одного метода, то для выбора режима профилирования нужно понимать следующее:
— точность измерения времени выполнения метода в режиме Tracing уменьшается по мере увеличения общего количества вызовов в поддереве этого метода. Это связано с тем, что в режиме Tracing профайлер выполняет некоторые действия на каждый вызов метода, и при этом он лишь частично компенсирует эту погрешность.
— точность измерения времени выполнения метода в режиме Sampling увеличивается по мере увеличения измеряемого времени. Это связано со статистическим характером сэмплинга: dotTrace сэмплирует каэжый поток с частотой 100 сэмплов/сек.
— режим Line-by-Line вносит наибольшую инструментальную погрешность в измерения, так как происходит дополнительная

В итоге, если в поддереве исследуемого метода не происходит большого количества вызовов других методов (например, их меньше 1000), то можно пользоваться Tracing'ом. Если же вызовов много, то лучше увеличить количество итераций цикла и использовать Sampling.