Si vous souhaitez imprimer un nombre entier à stdout, vous devez d'abord le convertir en chaîne, puisque c'est tout ce que stdout comprend. Si vous souhaitez imprimer deux entiers sur stdout, vous devez d'abord convertir les deux en une chaîne. Si vous voulez imprimer trois entiers sur stdout, vous devez d'abord convertir les trois entiers en une chaîne. Si vous voulez imprimer un milliard d'entiers sur stdout, vous devez d'abord convertir un milliard d'entiers en une chaîne.
Il n'y a rien que vous, nous, ou Ruby, ou vraiment n'importe quel langage de programmation puisse faire à ce sujet.
Vous pouvez essayer d'entrelacer la conversion avec les E/S en effectuant une mise en œuvre de flux lente. Vous pouvez essayer de faire la conversion et l'E/S en parallèle, en effectuant une implémentation de flux paresseux et en séparant la conversion et l'E/S en deux threads distincts.(Assurez-vous d'utiliser une implémentation Ruby qui peut réellement exécuter fils parallèles, pas tous peuvent:. IRM, YARV et Rubinius ne peuvent pas, par exemple)
Vous pouvez paralléliser la conversion, en convertissant des morceaux séparés dans le tableau dans des threads séparés en parallèle. Vous pouvez même acheter une machine d'un milliard de cœurs et convertir tous les milliards d'entiers en même temps en parallèle.
Mais même alors, le fait demeure: chaque entier doit être converti. Que vous le fassiez l'un après l'autre en premier, puis imprimez-les ou faites-les l'un après l'autre entrelacés avec les E/S ou faites-les l'un après l'autre en parallèle avec les E/S ou convertissez-les tous en même temps temps sur un processeur central de milliards: le nombre de conversions nécessaires ne diminue pas de façon magique. Un grand nombre d'entiers signifie un grand nombre de conversions. Même si vous effectuez toutes les conversions milliards dans un processeur de base de milliards en parallèle, il est toujours un milliard de conversions, c'est-à-dire un milliard d'appels à to_s
.
Juste curieux: pourquoi avez-vous besoin d'en imprimer autant sur la console rapidement? –