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
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.
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.
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.
- 1. Ce qui est plus rapide: SetEvent, SendMessage, PostMessage
- 2. Ce qui est plus rapide, equalsIgnoreCase ou compareToIgnoreCase
- 3. FirstOrDefault() || Sélectionnez() qui est le plus rapide?
- 4. Qu'est-ce qui serait plus rapide Flash ou Javascript?
- 5. Est-ce que ASP.Net (MVC) redirige vers le formulaire de connexion lorsque je génère un HttpUnauthorizedResult?
- 6. Qui est plus rapide, 'find -exec' ou 'find | xargs -0 '?
- 7. Formulaire ASP.NET MVC qui redirige vers une route
- 8. client de savon php: wsdl vs non-wsdl - ce qui est plus rapide?
- 9. Ce qui est plus rapide ... XSLT macro ou .Net User Control
- 10. Qu'est-ce qui est le plus rapide: SqlCommand.Parameters [string] ou .Parameters [int]?
- 11. ce qui est plus rapide requête (nom de sélection .... ou sélectionnez top (1) Nom
- 12. Qui est un objet plus léger
- 13. Énumération rapide dans OS 3.0
- 14. Formulaire qui redirige le navigateur lorsqu'il est accédé par un formulaire régulier ou par une requête Ajax - est-ce possible?
- 15. remplacer les caractères dans un fichier (méthode plus rapide)
- 16. Quelle est l'application TAR la plus rapide?
- 17. DrawDib StretchDIBits lequel est le plus rapide?
- 18. Comment pourrais-je créer un mod_rewrite qui redirige vers launch.php? I =/the/url/that/they/want?
- 19. Redirige les demandes uniquement si le fichier est introuvable?
- 20. sur quel os devrais-je essayer le vs2010 beta1? quel émulateur est plus rapide?
- 21. Est-ce que ce blitter de tuiles pourrait devenir plus rapide?
- 22. Quel est le moyen le plus rapide de trouver un fichier dans Zend Studio pour Eclipse?
- 23. IIS7 redirige automatiquement vers null (dans IE)
- 24. ColdFusion redirige les liens vers Joomla
- 25. Optimisation de tableau: qu'est-ce qui est le plus cher?
- 26. Est-il possible de capturer un system.out.print à partir du programme Java dans une variable csh?
- 27. Transfert de 100 000 images vers S3. Quel est le moyen le plus rapide?
- 28. Fonction DirectoryExists plus rapide?
- 29. Qu'est-ce qui est le plus rapide pour obtenir Mails dans Rails: Pop3/Imap ou requête MySQL directe?
- 30. Comportement Weird System.out.print dans NetBeans