Execution multi CPU ?
Fermé
InfoGene
Messages postés
5
Date d'inscription
jeudi 3 mars 2011
Statut
Membre
Dernière intervention
10 décembre 2013
-
4 déc. 2013 à 06:08
InfoGene Messages postés 5 Date d'inscription jeudi 3 mars 2011 Statut Membre Dernière intervention 10 décembre 2013 - 10 déc. 2013 à 01:27
InfoGene Messages postés 5 Date d'inscription jeudi 3 mars 2011 Statut Membre Dernière intervention 10 décembre 2013 - 10 déc. 2013 à 01:27
A voir également:
- Execution multi CPU ?
- Temperature cpu - Guide
- Cpu stress - Télécharger - Informations & Diagnostic
- Processeur cpu - Guide
- Multi exp pokemon diamant ✓ - Forum Jeux vidéo
- Cpu over temperature error - Forum Matériel & Système
1 réponse
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
7 déc. 2013 à 12:37
7 déc. 2013 à 12:37
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
10 déc. 2013 à 01:27