-
Notifications
You must be signed in to change notification settings - Fork 193
Home Work #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Home Work #3
Conversation
spajic
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
approve + some comments
|
|
||
| ## Формирование метрики | ||
| Для того, чтобы понимать, дают ли мои изменения положительный эффект на быстродействие программы я придумал использовать такую метрику: *тут ваша метрика* | ||
| Для того, чтобы понимать, дают ли мои изменения положительный эффект на быстродействие программы я придумал использовать такую метрику: Количество итераций в секунду. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Количество итераций в секунду на каком объёме данных?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Кажется, не очень удобная метрика с учётом того, что наша программа выполняется намного меньше одного раза в секунду.
| Программа поставлялась с тестом. Выполнение этого теста в фидбек-лупе позволяет не допустить изменения логики программы при оптимизации. | ||
| При чтении и парсинга файла data.txt Выходные данные из benchmark-ips | ||
|
|
||
| `2.995k (± 1.5%) i/s` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Что-то не то, не может быть 3000 итераций в секунду.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
это тестовый файл с 3 пользователями. При этом rspec был зеленый. Файл формировался корректно. Такие вот цифры..
| ## Гарантия корректности работы оптимизированной программы | ||
| Программа поставлялась с тестом. | ||
| Выполнение этого теста в фидбек-лупе позволяет не допустить изменения логики программы при оптимизации. | ||
| Для упрощение кода и выделение абстракций я вынес тестирование программы в отдельную директорию `spec` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
| Добавил возможность менять подключаемый файл с данными и отключение GC. Через аттрибуты метода work. | ||
| Для поиска точки роста использовал профилировщики: | ||
| * rbspy - не дал результатов. Основная нагрузка была в самом block in work. Метод work грамозкий и является антипатерном GodObject. | ||
| Для получения более подробной информации метод надо разбить на простые методы. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
| Довел код до зеленных тестов. Пока получилось правда с запашком. | ||
|
|
||
| Треды не включал. Всё происходит синхронно. Тесты запускаю в IDE Rubymine, что возможно могут дать не точные результаты. | ||
| А они вообще могут быть точными? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Нет, performance-тесты CPU всегда недетерминированные.
| #### Результат ruby-prof на большом файле | ||
| А тут уже интересно) | ||
| ``` | ||
| Total: 36.541374 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В бюджет 30 секунд не удалось уложиться?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Честно говоря можно и в меньше уложиться. Есть идеи как всё реализовать. Убрать класс Юзер. Имхо это лишняя абстракиця в данной момент. Можно сделать всё как бы в лоб. Так как это маленькая консольная утилита. Формировать первоначальный массив с меньшим кол-вом данных. Попробовать использовать волокнами или очередями для управления потоками. И должно всё гуд. Так же можно было воспользоваться чанками при чтении файла. Честно говоря приходя с работы я уже падал на диван и ни чего не хотелось делать( Мой косяк
Проделал первоначальный рефакт кода.
С каждой итерации собирал профайл и выявлял точку старта.