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