Question

Je dirigeais une tâche énorme [traduction automatisée scriptés avec base de données perl + etc.] pour fonctionner pendant environ 2 semaines non-stop. Tout en pensant à comment l'accélérer, j'ai vu que le tout du traducteur (toutes les phrases traduites, toutes les informations sur le chemin) pour STDOUT tout le temps. Cela fait fonctionner visiblement plus lent quand je reçois la sortie sur la console.

I évidemment canalisé la sortie /dev/null, mais je pensais « pourrait-il y avoir quelque chose d'encore plus vite? » Il est tellement sortie qu'il avait vraiment faire une différence.

Et c'est la question que je pose vous, car pour autant que je sache, il n'y a rien plus rapide ... (Mais je suis loin d'être un gourou ayant utilisé linux sur une base quotidienne seulement 3 dernières années)

Était-ce utile?

La solution

Sortie vers / dev / null est implémenté dans le noyau, ce qui est assez rapide sanglante. Le tuyau de sortie n'est pas votre problème maintenant, il est le temps qu'il faut pour construire les cordes qui sont envoyés à obtenir / dev / null. Je vous recommande de passer par le programme et commentaire (ou garde avec if $be_verbose) toutes les lignes qui sont les instructions d'impression inutiles. Je suis sûr que vous donner un gain de vitesse notable.

Autres conseils

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

A peu près la seule façon de le rendre plus rapide est de ne pas générer les données en premier lieu - supprimer entièrement les déclarations de journalisation. Le coût de production probablement tous les messages du journal dépasse le coût de les jeter un peu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top