A voir également:
- Execution multi CPU ?
- Temperature cpu - Guide
- Cpu burner - Télécharger - Optimisation
- Stress cpu - Télécharger - Informations & Diagnostic
- Cpu z - Télécharger - Informations & Diagnostic
- Cpu - Guide
1 réponse
Salut InfoGene,
Si tu veux utiliser les threads, il te faudra répartir la charge envoyée sur chaque thread intelligemment.
Diviser ton fichier en morceaux envoyés à chaque thread, avec une fonction appliquant à chaque bloc tous les traitements que tu veux faire est une approche. Puis tu fais un
Cependant, tu devras décider de combien de threads tu vas créer. Cela ne sert à rien d'en créer des millions comme le suggère ton code commenté. Vois avec 2 si cela améliore les performances, double pour voir...
Le gain en performances dépend de nombreux facteurs ou goulots d'étranglement : accès au disque, mémoire, et pas seulement de la puissance de calcul.
Donc il faudra tester.
Tu peux aussi optimiser ton code. La regexp
On pourrait aussi essayer de se passer des deux précédentes regexp, qui, en fait, se contentent de supprimer un espace en début et en fin de ligne s'ils existent, en passant par autre chose qu'une regexp. Mais ce n'est pas sûr qu'on gagne vraiment en temps d'exécution, les regexp Perl étant très optimisées.
Dal
threads->createprend en argument une référence à une fonction.
Si tu veux utiliser les threads, il te faudra répartir la charge envoyée sur chaque thread intelligemment.
Diviser ton fichier en morceaux envoyés à chaque thread, avec une fonction appliquant à chaque bloc tous les traitements que tu veux faire est une approche. Puis tu fais un
joinsur chaque thread créé pour t'assurer de la fin du traitement avant d'exécuter la suite de ton code.
Cependant, tu devras décider de combien de threads tu vas créer. Cela ne sert à rien d'en créer des millions comme le suggère ton code commenté. Vois avec 2 si cela améliore les performances, double pour voir...
Le gain en performances dépend de nombreux facteurs ou goulots d'étranglement : accès au disque, mémoire, et pas seulement de la puissance de calcul.
Donc il faudra tester.
Tu peux aussi optimiser ton code. La regexp
/(.*)\s(.*)/ne fait rien d'autre que
/\s/en réalité (vérifier s'il y a un espace n'importe où), et cela t'évite d'intégrer deux parenthèses capturantes dont tu n'as, en fait, pas besoin.
On pourrait aussi essayer de se passer des deux précédentes regexp, qui, en fait, se contentent de supprimer un espace en début et en fin de ligne s'ils existent, en passant par autre chose qu'une regexp. Mais ce n'est pas sûr qu'on gagne vraiment en temps d'exécution, les regexp Perl étant très optimisées.
Dal
InfoGene
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
merci bien pour votre patiente de prendre le temps pour me répondre avec des explications. Je vais essayer vos suggestions et je vous tiens au courant du fonctionnement du code une fois modifié.