12 November, 2010

О важности default значений

Забавная ситуация происходит, пользователи нам пишут что dotTrace Performance 4.0 работает медленно. С другой стороны многие ли позователь имеют ясное и четкое представление о том чем отличается sampling профиляция от tracing? Понимают ли пользователи, что один вид профиляции принципиально сильно быстрее или медленнее другого и почему это так?


Что же такое sampling? На данный момент это самый быстрый тип профиляции - накладные расходы и погрешности вносимые профайлером минимальны. Смысл в том, что через примерно равные промежутки времени профайлер снимает stacktrace. Другими словами статистически определяется место в программе которое выполняется дольше других. Минусы данного подхода - вы не видите всей картины и что-то важное может пройти мимо кассы вас.

Tracing же наоборот педантично собирает каждый вызов функии в программе. За такую скурпулезность пользователь платит временем исполнения программы и огромным объемом данных для анализа. Данный тип профиляции вносит погрешности, всегда вносит. Наша задача была в том, чтобы погрешность минимизировать. Но даннах возможность замедляет программу еще больше так как приходится измерять собственное время работы профайлера (см. опцию High accuracy)

А теперь собственно то к чему я все это говорю. По умолчанию в нашем профайлере выбран тип профиляции tracing! Есть мнение в команде, что некоторая существенная часть пользователей сравнивая профайлеры разных фирм по скорости работы не задумывается о том какой же тип профиляции включен в каждом профайлере и соответственно сравнивает "теплое" с "мягким". К сожаления такие пользователи как правило не оставляют свой e-mail в feedback поэтому точно узнать причину недовольства невозможно.

No comments: