2009-10-08 3 views
1

Je suis en train de créer un programme qui traite un gros fichier et qui renvoie quelque chose à un autre que je dois utiliser plus tard. Je me demande si je devrais juste imprimer la sortie et la rediriger vers un fichier, ou devrais-je simplement écrire dans le fichier dans le programme. Comme ce sera un très gros fichier, j'aimerais savoir de quelle manière il est plus rapide, chaque bit compte.System.out.print + OS redirige l'écriture vers un fichier, ce qui est plus rapide?

Répondre

1

Votre question est vraiment, "Devrais-je écrire sur stdout, ou utiliser des fichiers natifs?". La réponse dépendra un peu de la façon dont vous traitez le fichier (peut-elle être traitée et sortie ligne par ligne), et de l'optimalité de l'écriture du code d'entrée/sortie de votre fichier.

Il est tout à fait possible d'écrire du code qui sort directement vers un fichier qui est plus lent que le code qui écrit sur stdout.

1

Quelle est la différence? Stdout est un flux, donc c'est un fichier. Sur la plupart des systèmes d'exploitation, il n'y a littéralement aucune différence. Sous Windows, il existe différentes fonctions que vous devez utiliser lors de la gestion des flux de fichiers par rapport aux flux de sortie, mais ils sont presque exactement les mêmes API (seulement les fichiers ont le préfixe 'f'). Je serais très surpris s'il y a une différence de performance.

Vous pouvez bien sûr utiliser des API alternatives pour les fichiers, mais je ne vois pas de raison impérieuse de le faire, car les fichiers sont toujours des flux au niveau du système d'exploitation.

1

Si la sortie typique est un format texte, je préférerais stdout. Vous pouvez simplement vérifier si sur le terminal, rediriger vers un fichier ou le diriger vers la commande suivante. La performance devrait être la même. Pour la sortie binaire, la sortie du fichier est plus typique.

Questions connexes