Connaitre le nombre de coeur dans la machine

Résolu
Icarius44 Messages postés 51 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 16 mars 2009 - 23 sept. 2008 à 19:57
Icarius44 Messages postés 51 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 16 mars 2009 - 24 sept. 2008 à 22:19
Bonjour tous,

Je suis à la recherche d'une fonction me donnant le nombre de coeur de la machine lors de l'exécution.
J'ai explorer :
- System.getProperties() : nada
- Runtime.getRuntime().availableProcessors() mais il me donne 1 sur linux, et 2 sur windows :|
- System.getenv("NUMBER_OF_PROCESSORS"); mais ça ne donne ce qu'il faut :) mais que sur windows :( Sur linux j'ai un beau null...

Je me suis résolut à mettre 2 par défaut, mais c'est quand même nulle quand on tourne sur des quad core voir plus.

a votre bon coeur pour une solution ;)

3 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
23 sept. 2008 à 22:33
Salut,

j'ai également fait les même tests mais je n'ai pas les même résultats... java détecte bien les 2 coeurs
OS :  ubuntu 8.04
Kernel : 2.6.24-19-generic
CPU : Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz
le code utilisé :

import java.util.Enumeration;
import java.util.Hashtable;

import static java.lang.System.out;

public class Test {

        public static void main(String ...args) {
                out.println("Properties : ");
                Hashtable<Object, Object> props = System.getProperties();
                Enumeration<Object> keys = props.keys();
                while(keys.hasMoreElements()) {
                        Object key = keys.nextElement();
                        out.println(key + " : " + props.get(key));
                }
                out.println("availableProcessors : " + Runtime.getRuntime().availableProcessors());
                out.println("NUMBER_OF_PROCESSORS : " + System.getenv("NUMBER_OF_PROCESSORS"));
        }
}

les résultats :
Properties : <...>rien<...>
availableProcessors : 2
NUMBER_OF_PROCESSORS : rien mais je suis pas surpris

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
3
Icarius44 Messages postés 51 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 16 mars 2009 1
23 sept. 2008 à 20:02
Bonjour tous,

Je suis à la recherche d'une fonction me donnant le nombre de coeur de la machine lors de l'exécution.

J'ai exploré :
- System.getProperties() : nada
- Runtime.getRuntime().availableProcessors() mais il me donne 1 sur linux, et 2 sur windows
- System.getenv("NUMBER_OF_PROCESSORS"); mais ça ne donne ce qu'il faut mais que sur windows Sur linux j'ai un beau null...

Je me suis résolut à mettre 2 par défaut, mais c'est quand même nulle quand on tourne sur des quad core voir plus.

a votre bon core pour une solution ;)
0
Icarius44 Messages postés 51 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 16 mars 2009 1
24 sept. 2008 à 22:19
J'ai tester sur ubuntu 7.10. Etrange qu'on ai pas les même résultat.
Enfin bon, je m'en contenterai (en considérant le availableProcessors comme pas forcement fiable)

merci des test ;)

Icar
0
Rejoignez-nous