Если вы хотите напечатать целое число в stdout, вам нужно сначала преобразовать его в строку, так как это все stdout понимает. Если вы хотите напечатать два целых числа в stdout, вам нужно сначала преобразовать их в строку. Если вы хотите напечатать три целых числа в stdout, вам нужно сначала преобразовать все три из них в строку. Если вы хотите напечатать один миллиард целых чисел в stdout, вам нужно сначала преобразовать весь один миллиард из них в строку.
Нет ничего, что вы, мы, или Ruby, или действительно любой язык программирования может это сделать.
Вы можете попробовать чередование преобразования с помощью ввода-вывода, выполняя ленивую реализацию потока. Вы можете попытаться выполнить преобразование и ввод-вывод параллельно, выполняя ленивую реализацию потока и разделяя преобразование и ввод-вывод на два отдельных потока.(Не забудьте использовать реализацию Ruby, который может на самом деле выполнение параллельных потоков, а не все из них могут:. МРТ, YARV и Rubinius не могут, например)
Вы можете распараллелить преобразование, путем преобразования отдельных кусков в массиве в отдельных потоках параллельно. Вы даже можете купить миллиардную ядерную машину и одновременно конвертировать все миллиарды целых чисел параллельно.
Но даже тогда факт остается фактом: каждое целое число необходимо преобразовать. Выполняете ли вы это один за другим первым, а затем печатаете их или делаете это один за другим, чередуясь с вводом-выводом, или делаете это один за другим параллельно с вводом-выводом или даже конвертируете все из них в одно и то же время на миллиард основных процессоров: количество необходимых преобразований не волшебным образом уменьшается. Большое количество целых чисел означает большое количество преобразований. Даже если вы делаете все миллиарды конверсий в миллиард основных процессоров параллельно, то все еще миллиард конверсий, т. Е. Миллиард звонков на to_s
.
Просто любопытно: зачем вам печатать так много на консоли? –