2010-04-27 1 views
12

Je cours une tâche énorme [traduction automatique scriptée avec perl + base de données etc] pour fonctionner pendant environ 2 semaines non-stop. En réfléchissant à la manière de l'accélérer, j'ai vu que le traducteur restituait tout (toutes les phrases traduites, toutes les infos en chemin) vers STDOUT tout le temps. Cela rend le travail visiblement plus lent lorsque je reçois la sortie sur la console.Puis-je obtenir un tube de sortie plus rapide que/dev/null?

J'ai évidemment passé la sortie à /dev/null, mais j'ai alors pensé "pourrait-il y avoir quelque chose d'encore plus rapide?" C'est tellement de sortie que ça ferait vraiment une différence.

Et c'est la question que je vous pose, car pour autant que je sache, il n'y a rien de plus rapide ... (Mais je suis loin d'être un gourou ayant utilisé linux quotidiennement depuis 3 ans)

Répondre

21

La sortie vers/dev/null est implémentée dans le noyau, ce qui est assez rapide. Le tube de sortie n'est pas votre problème maintenant, c'est le temps qu'il faut pour construire les chaînes qui sont envoyées à/dev/null. Je vous recommande de passer par le programme et de commenter (ou de protéger avec if $be_verbose) toutes les lignes qui sont des instructions d'impression inutiles. Je suis sûr que ça va vous donner une accélération notable.

+0

ouais, mais le pire est en C++ et je n'ai pas le code. Encore c'est cool de savoir/dev/null est le meilleur;) – naugtur

+1

Ahh, d'accord. Vous avez dit que c'était écrit en perl. ;-) Oui,/dev/null est aussi rapide qu'un descripteur de fichier de sortie peut éventuellement être sans le piratage du noyau, et même alors, il serait difficile de le battre. – Benson

+0

J'ai choisi cette réponse pour les ajouts dans le commentaire. Je ne peux pas accepter les deux réponses. stackoverflow ne me laisserait pas;) – naugtur

18

Je peux (par dd) vider 20 gigaoctets de données par seconde/dev/null. Ce n'est pas votre goulot d'étranglement :-p

La première manière de le rendre plus rapide est de ne pas générer les données en premier lieu - supprimez complètement les instructions de journalisation. Le coût de production de tous les messages de journal dépasse probablement le coût de les jeter un peu.

+0

Merci pour le test. Je ne m'attendais pas à ce que ce soit un goulot d'étranglement, je me demandais plutôt ... il est 23h15 où je suis assis. Bon moment pour de telles pensées: P – naugtur

Questions connexes