Skip to content

Conversation

@potashin
Copy link

@potashin potashin commented May 6, 2024

Screenshot 2024-05-07 at 01 48 16

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.

valgrind вероятно не запустился корректно, так как там памяти меньше 20мб

им на самом деле более интересно чекать на стадии когда память ещё нарастает во время работы программы; когда потребление уже константное, там можно только это засвидетельствовать (но есть ещё кейс когда программа например сразу крашится / не может найти файл, тогда это тоже выглядит как константное потребление памяти, но меньше минимума)

Я решил исправить эту проблему, оптимизировав эту программу.

## Формирование метрики
Для того, чтобы понимать, дают ли мои изменения положительный эффект на быстродействие программы я придумал использовать такую метрику: количество потребляемой памяти при просчете 100к записей (885 мб на старте, 11.4 секунды)
Copy link
Collaborator

Choose a reason for hiding this comment

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

👍

### Ваша находка №6
- профилировщик показывает `48221760 task-2.rb:72` как лидирующую позицию, но дальнейшие попытки оптимизации не приводят к снижению потребляемой памяти: основной точкой роста является ограничение накапливаемых данных
- переписываю программу в потоковом стиле (накапливаем данные только по 1 пользователю и его сессиям за раз, после накопления собираем статистику, пишем в файл и начинаем сначала)
- снизилась до 21мб для 100к (для всего файла тоже 21мб)
Copy link
Collaborator

Choose a reason for hiding this comment

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

да, самое кайфовое, что теперь любой объём данных так можно перелопатить

task-2.rb Outdated
user_stats['longestSession'] = session['time']
end

unless report['allBrowsers'].include?(session['browser'])
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.include? -> O(N), Set << browser -> O(1)

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