@IvanN777

Чтение очень большого потока из файла, на руби?

Первое, что приходит на ум, однако что случиться, если строка одна и двухгиговая.
$stdin.each_line do |line|
        
 end

Или лучше так?
$stdin.each(' ') do |i|

end
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 2
Комментировать
Rou1997
@Rou1997
однако что случиться, если строка одна и двухгиговая.

Прежде всего может не хватить ОЗУ, мне для декомпилятора написанного на Python понадобилось десять гигабайт, а было бы декомпилируемое приложение очень большим, может и новый компьютер покупать бы потребовалось, хотя если рассуждать то зачем ему все держать в ОЗУ, это просто плохое его качество.
А также с размером возрастает риск исключительной ситуации, конечно файловая система это не сеть чтобы так беспокоиться о разных "обрывах", но иногда важно.

Все остальное (быстродействие или локальные проблемы ОС или вашего Ruby) - смотрите соответственно свою ОС и Ruby, если он использует буферное чтение то вроде бы ОС не должна ограничивать размер, если проблемы с быстродействием чтения - попробуйте вызов API ОС и сравните мсек, если сильно разные то придется как-то обращаться к API напрямую и т.п., в конце-концов не так и сложно просто создать 1-2 ГБ файл и проверить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы