Skip to content

Cpu optimizations#9

Open
KirkovAlexey wants to merge 8 commits intospajic:masterfrom
KirkovAlexey:cpu_optimizations
Open

Cpu optimizations#9
KirkovAlexey wants to merge 8 commits intospajic:masterfrom
KirkovAlexey:cpu_optimizations

Conversation

@KirkovAlexey
Copy link

No description provided.

Copy link
Owner

@spajic spajic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Аппрув + пара комментов.
Хорошо, что вы подробно написали отчёт, действительно понятно, как принимали решения.
Но надо стараться начинать не с 4-5 места в отчёте, а с 1го.
Иногда для этого надо немного подрефачить код, но эффект заведомо будет больше.


## Асимптотика

Для упрощения работы с данными подготовил программу `preparing-data.rb`, которая генерит данные нескольких размеров (1mb, 4Mb, 10Mb и оригинальный файл) из архива.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

### Ваша находка №X
О вашей находке №X
По отчету видно что второе место по затратам занимает метод `Array#include?`, который используется при формировании массива с сессиями юзеров.
При анализе исходного кода видно, что мы можем использовать `SortedSet`, так как это нам даст выигрыш в скорости при поиске элемента в массиве и не будет необходимости сортировать массив для статистики.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


### Ваша находка №3

Пятое место при профилировании с помощью `RubyProf::CPU_TIME` занимает преобразование `hash` в `json`.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно было бы выиграть больше, начиная с первого!
По отчёту просто не понятно, что именно там за Array#each, но я показывал на 2й лекции, как с этим побороться.
Можно отрефачить все вызовы each в именованные методы, и тогда отчёт покажет, кто же конкретно на первом месте.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants