LINUX.ORG.RU

как измерить эффект от изменений

 


0

2

Хотел бы проконсультироваться с форумчанами о том, кто как меряет эффект от оптимизаций.

Дано: Логи с указанием времени ответа бэкенда. Произведена некоторая оптимизация от которой это время зависит (в моем случае это была база данных).

Требуется: Каким-то образом подсчитать эффект произведенного изменено. Иными словам и надо отобразить «стало быстрее» в какой-либо осязаемой форме.

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

Но:

1. Такой подход не масштабируется на пару тысяч страниц

2. Не все страницы одинаково часто используются. Иными словами ускорение на 100 мс страницы просматриваемой миллион раз в день это лучше чем ускорение на 10 секунд страницы с 10 посещениями.

3. У бэкенда множество зависимостей, посему некоторые страницы показывают слишком большой разброс в результатах, чтобы было на глазок понятно стало лучше или нет конкретно для нее.

Интуитивно понятно, что тут надо применять методы анализа численных рядов _для каждой страниицы_ в отдельности. Но какие и как? Возможно надо анализировать два ряда «до» и «после», вычислять какие-то ветрики для них и сравнивая их находить те страницы на которых виден эффект. Но какие? Просто среднее за день сработало неплохо для «стабильных» страниц, но ничего не показало для более шумных.

Подскажите или направьте в гугол, наверняка же проблема то уже решенная.

Ответ на: комментарий от pon4ik

И мерять время выполнения тестов? Ничего не меняется для задачи, считай что каждая запись в логе это один тест и его время выполнения.

redbaron ★★ ()
Ответ на: комментарий от redbaron

Я думаю, он имел в виду тесты, которые проводятся в автоматическом режиме после очередной сборки приложения. Соответственно, ведется статистика времени отклика (ну или что ты там тестировать собрался), которую можно будет анализировать. А так, чтобы взять без тестов что-то соптимизировать, а потом думать был эффект или не был - это как-то странновато.

winlook38 ★★ ()
Ответ на: комментарий от redbaron

А, я не сразу понял об чём ты.

У страниц - должна быть оценка вэлуе которое они приносят. Если каждое посещение равноценно - то можно использовать их количество как оценку.

Однако, выглядит всё так, что любая оптимизация как таковая бесполезна/равноценна, ибо, важно только количество посещений в день. Т.е. нужно анализировать действия которые повышают эту величину. Либо, ту величину, которую ты выберешь в качестве оцениваемой.

pon4ik ★★★★★ ()
Ответ на: комментарий от pon4ik

Оцениваемая величина - время потраченное на ожидание страницы, умноженное на почасовую оплату работников может служить оценкой сверху в денежном выражении.

Если бы в день все страницы просматривались строго одинаковое количество раз и каждая страница бы отображалась за одинаковое время, я бы просто складывал все просмотры в день до изменения, затем после. Вычел одно из другого и получил бы количество часов сэкономленных в день.

Но жизнь как обычно сложнее идеального мира: 1) одна и та же страница в разные дни просматривается разное количество раз

2) некоторые страницы показывают очень нестабильное время. Вручную проверил пару таких, те про которые известно, что они ускорились и видно что значения пляшут вокруг разных средних до и после изменения. Но изменение средних сильно меньше,чем разброс значений вокруг них.

У меня есть примерная оценка эффективности изменения из анализа запросов к базе данных, по ним видно, что определенная группа запросов занимала в сумме 4-12 часов в день (зависит ото дня), теперь их время сократилось до 10-30 минут. Хотелось бы более надежного способа измерения ибо не все запросы в логах базы созданы системами с которой работают интересующие меня люди, многие запросы там результат работы скриптов, скорость выполнения которых никого не волнует, либо другими внутренними системами.

Использование логов вебсервера дает более приближенный к реальности результат, но и работать с ними сложнее, ибо непонятно где ускорилось (и насколько), а где нет.

Пока решил попробовать построить графы 10,20...99% персентили по времени и увидеть эффект на них, но все что это мне даст это доказательство, что эффект есть, но и без этого видно, что он есть, хотя бы по отзывам пользователей, но вот как его измерить в попугаях?

redbaron ★★ ()
Ответ на: комментарий от redbaron

А если для попугаев просто использовать взвешенную сумму времени отклика по всем страницам? Тогда можно обойтись и без серьезных познаний в математической статистике. Более того, доходчиво можно объяснить менеджерам.

dave ★★★★★ ()
Ответ на: комментарий от redbaron

Ну, и чтобы совсем было здорово, для подбора весов можно решить обратную задачу... Закладываешь процент того, на сколько попугаев должно стать больше. Получаешь оптимизационную задачу, где неизвестными будут веса для такой суммы. После решения получаешь такие веса, которые уже задают нужное соотношение попугаев.

Назовем этот процесс калибровкой. Плюс в том, что при следующих изменениях кода можно будет уже оценивать в попугаях вклад изменений.

Примитивно, топорно, но может сработать. Тем более, многих знаний не надо. А подобрать веса можно и в Excel тупым перебором.

dave ★★★★★ ()
Ответ на: комментарий от dave

Если подбирать веса таким образом, то да, можно нарисовать прирост на любое количество попугаев, но это плохо в долгосрочной перспективе. Ведь тогда если следующие улучшение не будет влиять на те строницы, на которое влияло последнее, то попугаи никуда не сдвинутся, сам себе яму вырою получается.

Какой может быть относительно честная весовая функция? Средняя популярность страницы за месяц? Надо посмотреть насколько стабилен этот параметр от месяца к месяцу.

redbaron ★★ ()
Ответ на: комментарий от redbaron

Возможно, чем популярнее страница, тем, скорее всего, должен быть выше вес.

Выбор честной функции - это сложная тема. Этим, вообще, занимается целая область мат.статистики - регрессионный анализ.

Могу только добавить, что идеальной оценки нет. Риск ошибиться будет всегда. Неужели все настолько серьезно и нужны обязательно такие попугаи?

dave ★★★★★ ()

google://«регрессионное тестирование»

google://«юнит тестирование»

Deleted ()
Последнее исправление: Deleted (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.