git.iko.soy/Fraudik/haskell-web-wc
on main help sign in
33 lines 2.6 kB history raw
1# haskell-wb-wc
3Проект студента Блинов Илья Игоревич: веб версия утилиты wc.
5## Описание проекта
7Пользователь может отправлять MultipartForm запросы с текстовым файлом и получать для него статистику по типу обычной для утилиты wc.
9## Состояние проекта
11[x] Первая версия, Proof of Concept. Просто работа с MultipartForm запросами, реализация wc из домашнего задания, тестирование через отправку этого README.\
12[x] Подготовлен тестовый файл: sample.txt в 1,12 ГБ. Статистики первого wc для него: 25018508 194885810 1209339403 (строки, слова, символы)\
13[x] Реализован подсчет слов, проверена корректность\
14[x] Реализована параллельная обработка (интерфейс обращения к WordCount пришлось немного поменять для удобства)\
15[x] Реализована функция для обработки строки по батчам и переводам их в stream\
16[x] Написаны тесты\
17[x] Добавлены файлы размером 500MB, 2GB, 3GB для тестов производительности\
18[x] Добавлен flamegraph
20## Анализ производительности
22На файле размером в 1GB:
231. Proof of Concept: Elapsed (wall clock) time (h:mm:ss or m:ss): 0:27.25, Maximum resident set size (kbytes): 1816
242. Подсчет слов: Elapsed (wall clock) time (h:mm:ss or m:ss): 0:39.20, Maximum resident set size (kbytes): 1816
253. С параллельной обработкой и 16 Haskell потоками: Elapsed (wall clock) time (h:mm:ss or m:ss): 0:13.07, Maximum resident set size (kbytes): 1820
27Итоговая реализация на файлах размером 500MB, 1GB, 2GB, 3GB:
281. (500MB): Elapsed (wall clock) time (h:mm:ss or m:ss): 0:07.92, Maximum resident set size (kbytes): 1820
292. (1GB): Elapsed (wall clock) time (h:mm:ss or m:ss): 0:16.96, Maximum resident set size (kbytes): 1820
303. (2GB): Elapsed (wall clock) time (h:mm:ss or m:ss): 0:29.03, Maximum resident set size (kbytes): 1824
314. (3GB): Elapsed (wall clock) time (h:mm:ss or m:ss): 0:40.95, Maximum resident set size (kbytes): 1824
33Время растет линейно.