Question

Comme je l'ai créé l'application qui est difficile sur les calculs -> beaucoup de travail à faire, pas des calculs très complexes -> il prend trop de temps pour travailler dehors et le processus est seulement à 45% de la CPU. Puis-je optimiser en quelque sorte ?: aller à 90%?

Était-ce utile?

La solution

Si vous avez une machine dual core (que je devine que vous faites), le plus vous pourriez espérer obtenir dans un seul thread serait de 50% l'utilisation du processeur.

Pour l'utilisation du processeur de 90%, vous aurez probablement besoin d'enfiler vos calculs. Cela peut être très simple ou très difficile, selon la nature de l'algorithme que vous voulez fil.

Si vous pouvez briser votre jeu de travail en plusieurs groupes, je recommande d'envisager l'utilisation ThreadPool , ou peut-être même Task Parallel Library , selon votre calendrier pour la libération.

Autres conseils

Plus que probablement vous avez un processeur dual core, et si votre application est un seul thread, la CPU maximale, il utilisera 50% (tous un noyau). Afin d'obtenir une meilleure utilisation, vous devez utiliser plusieurs threads, mais cela signifie aussi déterminer un moyen de briser vos calculs en morceaux afin qu'ils puissent être travaillés par plus d'un noyau.

Vérifiez ceci:

  1. Avez-vous lu à partir du disque lors du calcul? Si oui, essayez de lire les données en mémoire avant les calculs.
  2. Avez-vous écrivez des résultats sur le disque ou la console lors du calcul? Si oui, essayez de reporter l'écriture jusqu'à ce que le calcul est terminé et n'écrire.
  3. Si vous avez processeur multicœur, essayez de créer algorithme multithread si possible.

Si vous avez juste une simple boucle faire les calculs, il est fort probable votre ordinateur a deux cœurs / processeurs. Une application mono-thread sera au mieux utiliser 50% de la CPU.

Vous avez besoin de plusieurs threads à utiliser l'ensemble CPU sur une machine multi-core.

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