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

Оптимизация для чтения объемного текстового потока #6

Merged
merged 14 commits into from
May 14, 2020

Conversation

inner-whisper
Copy link
Owner

@inner-whisper inner-whisper commented Apr 8, 2020

  • Вынести функционал фильтрации текстового потока в отдельный класс
  • Изменить способ чтения из файла на способ без выгрузки всего файла в память через .read
  • Изменить алгоритм фильтрации потока на O(N) по пространству (массив максимум размера N)
  • Поискать оптимальные способы сортировки рабочего массива на лету
  • Оптимизировать алгоритм по времени выполнения на объемном файле
    • Реализовать чтение с ограничением по буферу (например, 1000 байт) - IO.foreach(path, 1000) { |line| puts line }
    • В рамках прочитанного используем тот же алгоритм
    • Если последний байт в строке - число, то в новом куске начинать чтение будем с уже наполненной цифрами промежуточной строчки
    • Проверить, что будет, если последний символ в отрезанном куске - половина двубайтного символа (например, буква из кириллицы)
  • Прогнать тест на примере (каком-нибудь логе), сравнить с master-веткой - time bash -c 'cat example.log | bundle exec exe/nmax 1000'
  • Сгенерировать 20-30 Гб файл и сравнить производительность скриптов на нем (кроме самого быстрого)

@inner-whisper inner-whisper changed the title Оптимизация для чтения объемного текстового потока WIP: Оптимизация для чтения объемного текстового потока Apr 8, 2020
@inner-whisper inner-whisper changed the title WIP: Оптимизация для чтения объемного текстового потока Оптимизация для чтения объемного текстового потока Apr 8, 2020
@inner-whisper inner-whisper merged commit 6f7b45f into master May 14, 2020
@inner-whisper inner-whisper deleted the 1-optimize-nmax-search-for-big-files branch May 14, 2020 11:02
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.

None yet

1 participant