L'analyse comparative à l'intérieur du code Java

J'ai été à la recherche dans l'analyse comparative dernièrement, j'ai toujours été intéressé par le programme d'enregistrement de données, etc. J'ai été intéressé de savoir si nous pouvons mettre en œuvre notre propre utilisation de la mémoire de code et de mettre en œuvre notre propre temps code de la consommation efficacement à l'intérieur de notre programme. Je sais comment vérifier de temps il faut pour une exécution de code:

public static void main(String[]args){
        long start = System.currentTimeMillis();
        //code
        System.out.println(System.currentTimeMillis() - start);
    }

J'ai aussi regardé dans Robuste Java analyse comparative, Partie 1: Questions, ce tutoriel est très complet. Affiche les effets négatifs de la System.currentTimeMillis();. Le tutoriel puis suggère que nous utilisons System.nanoTime(); (le rendre plus précis?).

J'ai aussi regardé La détermination de l'Utilisation de la Mémoire en Java pour l'utilisation de la mémoire. Le site montre comment vous pouvez la mettre en œuvre. Le code qui a été fourni regarde inefficent parce que la personne appelle

long L = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

Après ce qu'il appelle System.gc(); (4 * 4) = 16 fois. Puis répéter le processus à nouveau.
N'est-ce pas aussi prendre de la mémoire?

Donc, en résumé, est-il possible de mettre en œuvre efficace d'analyse comparative de code à l'intérieur de votre programme java?

Voir ce post stackoverflow.com/questions/4583175/benchmarking-java-programs Il a de bons conseils. En particulier, vous devriez lire ceci.
La mesure de la performance du Système.currentTimeMillis() doit être évitée en faveur du Système.nanoTime(), parce que currentTimeMillis peut aller "dans le temps" par exemple, si le serveur NTP va corriger l'heure actuelle pour la machine.
Voir cette réponse, trop.

OriginalL'auteur Jeel Shah | 2011-12-07