Conseils pour garder Perl utilisation de la mémoire faible

Quels sont les bons conseils pour garder la mémoire d'utilisation de la basse dans un script Perl? Je suis intéressé à apprendre comment garder ma mémoire, aussi bas que possible pour les systèmes selon les programmes Perl. Je sais que Perl n'est pas génial quand il s'agit de l'utilisation de la mémoire, mais je voudrais savoir si il y a des conseils pour l'améliorer.

Alors, que pouvez-vous faire pour garder un script Perl qui utilise moins de mémoire. Je suis intéressé par toutes les suggestions, s'ils sont réels conseils pour l'écriture de code, ou des conseils pour savoir comment compiler Perl différemment.

Modifier pour Bounty:
J'ai un programme en perl qui sert de serveur pour une application réseau. Chaque client qui se connecte à elle obtienne sa propre processus enfant actuellement. J'ai utilisé les threads au lieu de fourches ainsi, mais je n'ai pas été en mesure de déterminer si l'utilisation de threads au lieu de fourche est en fait plus efficace en terme de mémoire.

Je voudrais essayer de l'utilisation de threads au lieu de fourchettes de nouveau. Je crois en théorie, il devrait enregistrer sur l'utilisation de la mémoire. J'ai quelques questions à cet égard:

  1. Ne threads créés en Perl empêcher la copie des bibliothèques de modules Perl
    en mémoire pour chaque thread?
  2. Est fils (fils) le moyen le plus efficace (ou la seule)
    façon de créer des threads en Perl?
  3. Dans les fils, je peux spécifier un stack_size paramater, qu'est-ce spécifiquement
    dois-je considérer lors de la spécification de cette valeur, et quelle est son incidence
    l'utilisation de la mémoire?

Avec les threads en Perl/Linux, ce qui est la méthode la plus fiable pour déterminer le montant réel de l'utilisation de la mémoire sur une base par thread?

  • C'est une très vaste question. Les conseils peuvent être moins aléatoire si vous pouvez fournir certaines tâches que vous voulez accomplir.
  • Je pense que vous devriez sortir de votre questions supplémentaires dans de nouveaux Stackoverflow questions.
  • Ouais j'avais pensé que permettrait d'obtenir une meilleure réponse, mais j'ai réalisé qu'après que j'ai d'installation de la bounty. Maintenant, je ne suis pas sûr de savoir comment j'allais faire de si. Est-il possible d'annuler un bounty? Je ne pense pas que ça :-/
  • Notez que les "fils" ne crée pas ce que les gens normalement appeler "fils" en dehors de Perl: "utiliser des threads" émule un processus normal, et est généralement beaucoup plus lent, et plus que réel threads ou processus réels, par exemple, "fils" émule le MMU dans le logiciel et le rend plus ou moins complète des copies physiques de chaque thread qui crée un nouveau thread.
  • pour perl meilleure prise en charge est de fourche. les threads en perl sont comme des étrangers. il y a beaucoup de bugs, des conditions de course ou les serrures. spécialement, si vous utilisez dans le thread travailleur fourche, les opérations d'e/S et les tuyaux. Il ya une grande chance, votre fil raccrocher, et vous en tant que solution de contournement doit détacher. Il n'est pas vrai, la nature de threads en perl est avec du fil de l'émulation par la fourche. Généralement sur linux threads sont très proches de processus. Il devrait économiser de la mémoire, mais pas en perl. Lorsque vous permettra de créer des threads en perl, toutes les variables seront dupliqués comme une copie de fil. Ensuite, une meilleure utilisation de la fourche et de sélectionner les fonctions.
InformationsquelleAutor GoldenNewby | 2012-03-16