[JAVA] Point 59: Connaître et utiliser les bibliothèques

59. Connaître et utiliser la bibliothèque

package tryAny.effectiveJava;

import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;

import org.apache.commons.lang3.time.StopWatch;

public class RandomTest {
    public static void main(String[] args) {
        int n = 2 * (Integer.MAX_VALUE / 3);
        int low1 = 0;
        StopWatch sw1 = new StopWatch();
        sw1.start();
        for (int i = 0; i < 1000000; i++) {
            if (random(n) < n / 2) {
                low1++;
            }
        }
        sw1.stop();

        System.out.println(low1); //Je ne pense pas que ce sera autour de 500 000. 666 666e place.
        System.out.println(sw1.getTime());

        int low2 = 0;
        StopWatch sw2 = new StopWatch();
        sw2.start();
        for (int i = 0; i < 1000000; i++) {
            if (tlr.nextInt(n) < n / 2) {
                low2++;
            }
        }
        sw2.stop();
        System.out.println(low2);//Ce sera environ 500 000.
        System.out.println(sw2.getTime());//La vitesse ne change pas beaucoup
    }

    static Random rnd = new Random();

    static int random(int n) {
        return Math.abs(rnd.nextInt()) % n;
    }

    static ThreadLocalRandom tlr = ThreadLocalRandom.current();

}

Recommended Posts

Point 59: Connaître et utiliser les bibliothèques
Élément 40: utiliser systématiquement l'annotation de remplacement
Point 72: Favoriser l'utilisation d'exceptions standard
Importez une instance et utilisez-la sur un autre écran
[Rails] Je ne sais pas comment utiliser le modèle ...
Item 52: Utiliser la surcharge judicieusement
Point 53: Utilisez judicieusement les varargs
Point 45: Utilisez judicieusement les flux
Jusqu'à l'utilisation de Spring Data et JPA Part 1
[Java] Utilisez ResolverStyle.LENIENT pour bien gérer la date et l'heure
Point 83: Utilisez judicieusement l'initialisation paresseuse
Point 26: N'utilisez pas de types bruts
Utilisez un filtre et une carte rapides
À peu près la même et la même valeur
Élément 70: utiliser les exceptions vérifiées pour les conditions récupérables et les exceptions d'exécution pour les erreurs de programmation