Из комментария к вопросу о выборе n случайных строк из текстового файла здесь:
Выбрать случайные строки из файла
Пользователь прокомментировал, что они использовали команду shuf для случайного выбора строк из текстового файла, содержащего 78 миллиардов строк, менее чем за минуту.
Я вижу из различных источников на inte rnet, что у людей есть текстовые файлы размером от 100 до 200 - 300 ГБ, всего 7-15 миллиардов строк, в зависимости от метаданных.
Предполагается, что у нас есть:
Текстовый файл, содержащий символы ASCII, где мы определяем разрыв строки для новой строки после каждых 100 символов. В этом файле 78 миллиардов строк.
У нас есть система с вычислительной мощностью:
a. Оперативная память - 16 ГБ
1028 * б. Процессор - 2,5 ГГц Intel Core i7 c. Диск - 500 ГБ SSD
Мне любопытно:
- Каков будет приблизительный размер текстового файла?
Будет ли это также зависеть от того, как разные ОС кодируют и хранят символы на уровне памяти? Если да, то насколько это будет учитываться при расчете размера?
В идеале, сколько времени bash - запущенного в системе (с указанными выше спецификациями) - потребуется для обработки этого текстового файла с помощью команды shuf ?
Если размер текстового файла указан в ТБ, то как передать данные в систему? Как shuf будет работать с такими большими файлами с максимальной эффективностью в упомянутой системе.
shuf производительность в моей системе (спецификации выше):
100 символов в строке: 1 строка
РАЗМЕР ФАЙЛА: ~ 100 Байт
ВРЕМЯ: реальное 0m0.025s user 0m0.007s sys 0m0.013s
100 символов в строке: 100000 строк
РАЗМЕР ФАЙЛА: ~ 10MB
ВРЕМЯ: реальное 0m0.122s user 0m0.036s sys 0m0.080s
100 символов на строку: 100000000 строк
РАЗМЕР ФАЙЛА: ~ 10 ГБ
ВРЕМЯ: реальное 9m37.108s пользовательское 2m22.011s sys 3m3.659s
[nit: Для тех, кому интересно, вот несколько тем Reddit Meme для того же: https://www.reddit.com/r/ProgrammerHumor/comments/grsreg/shuf_go_brrr/
https://www.reddit.com/r/ProgrammerHumor/comments/groe6y/78_billion_prayers/]
Редактировать # 1: Уточнение вопроса, чтобы было больше деталей. Добавление дополнительных ресурсов в соответствии с комментариями и выводами.
Редактировать # 2: Добавлена производительность shuf в мою систему для текстовых файлов разных размеров