Skip to content
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

Add task 1 #126

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Add task 1 #126

wants to merge 1 commit into from

Conversation

Yorickov
Copy link

Task first done.

Copy link
Collaborator

@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.

Respect, nice work ✅

@@ -0,0 +1,46 @@
bm:
Copy link
Collaborator

Choose a reason for hiding this comment

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

О, Мейкфайл кайф

- использовал Set и поменял во всем коде Array#+ на Array#<<
- новая метрика
# 40_000 - 0.25s
- новый отчёт профилировщика: обе проблемы решены
Copy link
Collaborator

Choose a reason for hiding this comment

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

Лучше не смешивать несколько оптимизаций в один шаг

Плохая работа со строками - #split, #upcase, RegExp
- Оптимизировал работу cо строкаи, а также методы сбора статистики браузеров, убрав лишние проходы по коллекциям
- новая метрика
# 40_000 - 0.15s
Copy link
Collaborator

Choose a reason for hiding this comment

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

Файл уже маловат, для профилирования реально долгого процесса хорошо брать пример, который покрутится хотя бы несколько секунд


*Какими ещё результами можете поделиться*
Сознательно отказался от попытки посторочного или глобального анализа кода и шел тупо по результатам профилировщика, что было интересным опытом. Быстрое и грубое решение об изменении схемы перебора Array#select + замена Array#+ на Array#<< радикально поменяла всею картину. Потом код дорабатывался (в итоге - долго) - убирал лишние переборы и проч., но эффект был незначительный (кроме парсинга даты). Принцип Парето как он есть:) Можно дальше дорабатывать, посмотреть сериалайзер для JSON и проч., но задача выполнена - бюджет достигнут. Также поразмышлял над диллемой - добавить коду читаемости и удобства поддержки или тупо выгадывать каждую миллисекунду, учитывая что по сравнению со временем запроса к БД это - ничто.
Copy link
Collaborator

Choose a reason for hiding this comment

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

👍 супер

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