Skip to content

roman-personal/FileSort

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FileGen

Генерация тестового файла для сортировки

Вызов

> filegen [имяфайла.ext] [размер_в_мегабайтах] [режим_генерации]

Например:
> filegen sample.txt 1024 M2

Все параметры позиционные и не обязательные

Имя файла по умолчанию: sample.txt
Размер в мегабайтах по умолчанию: 1024
Режим генерации по умолчанию: M2

Режимы генерации

Для генерации тестового файла используется список предложений sentences.txt (50 предложений)
Числовая часть записи - случайное число в диапазоне от 1 до 100000

M1 (FileGenM1.cs) - запись через StreamWriter (просто и медленно)
M2 (FileGenM2.cs) - генерация в буфер памяти (StringBuilder) и последующая запись
M3 (FileGenM3.cs) - генерация в буфер памяти (StringBuilder) и запись (параллельно)

Результаты

Генерация тестового файла 1GB

M1 - 00:00:42.0692715
M2 - 00:00:02.8147587
M3 - 00:00:01.8521820

Генерация тестового файла 10GB

M1 - N/A
M2 - 00:00:37.9770485
M3 - 00:00:33.4934930

FileSort

Сортировка текстового файла, в каждой строке которого запись вида "число. текст"

Вызов

> filesort [имя_исходного_файла.ext] [имя_результирующего_файла.ext] [режим_сортировки]

Например:
> filesort sample.txt sorted.txt M1

Все параметры позиционные и не обязательные

Имя исходного файла по умолчанию: sample.txt
Имя результирующего файла по умолчанию: sorted.txt
Режим сортировки по умолчанию: M1

Режимы сортировки

M1 (FileSorterM1.cs) - Чтение/сортировка/слияние. Чтение чанками по 1М записей (один поток), сортировка в памяти и запись во временное оглавление (4 потока), слияние (до 6-ти потоков). Не быстро, но без ограничения на входные данные.
M2 (FileSorterM2.cs) - Чтение и составление частотного словаря, генерация "отсортированного" файла по словарю. Используется то обстоятельство что в исходном файле большое количество повторений текстовой части записи, а числа находятся в диапазоне от 1 до 100000

Результаты

Сортировка файла 1GB

M1 - 00:00:46.5659943
M2 - 00:00:08.6131212

Сортировка файла 10GB

M1 - 00:08:31.2478563
M2 - 00:01:40.1381780

Тестовое окружение

Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
16.0 GB (15.9 GB usable)
SSD 512 GB

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages