Mesure de performance Java

Je fais un certain Java comparaison des performances entre mes cours, et je me demandais si il y avait une sorte de Java Cadre de Performance pour rendre l'écriture de mesure du rendement de code plus facile?

I. e, ce que je fais maintenant est d'essayer de mesurer l'effet qu'a-t-elle de disposer d'une méthode comme "synchronisée", comme dans PseudoRandomUsingSynch.nextInt() par rapport à l'utilisation d'un AtomicInteger comme mon "synchroniseur".

Donc je suis en train d'essayer de mesurer combien de temps il faut pour générer des nombres entiers à l'aide de 3 fils de l'accès à une méthode synchronisée en boucle pour dire 10000 fois.

Je suis sûr qu'il ya une bien meilleure façon de faire cela. Pouvez-vous svp m'éclairer? 🙂

public static void main( String [] args ) throws InterruptedException, ExecutionException {
    PseudoRandomUsingSynch rand1 = new PseudoRandomUsingSynch((int)System.currentTimeMillis());
    int n = 3;
    ExecutorService execService = Executors.newFixedThreadPool(n);

    long timeBefore = System.currentTimeMillis();
    for(int idx=0; idx<100000; ++idx) {
        Future<Integer> future = execService.submit(rand1);
        Future<Integer> future1 = execService.submit(rand1);
        Future<Integer> future2 = execService.submit(rand1);

        int random1 = future.get();
        int random2 = future1.get();
        int random3 = future2.get();

    }
    long timeAfter = System.currentTimeMillis();
    long elapsed = timeAfter - timeBefore;
    out.println("elapsed:" + elapsed);
}

la classe

public class PseudoRandomUsingSynch implements Callable<Integer> {
private int seed;

public PseudoRandomUsingSynch(int s) { seed = s; }

public synchronized int nextInt(int n) {
    byte [] s = DonsUtil.intToByteArray(seed);
    SecureRandom secureRandom = new SecureRandom(s);
    return ( secureRandom.nextInt() % n );
}

@Override
public Integer call() throws Exception {
    return nextInt((int)System.currentTimeMillis());
}
}

Ce qui concerne

source d'informationauteur portoalet