La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Pierre-Yves ALIZON – Ingénieurs 2000. Sommaire Un bref historique Larchitecture JAVA La plate-forme java Le compilateur Le format class La JVM Le JIT.

Présentations similaires


Présentation au sujet: "Pierre-Yves ALIZON – Ingénieurs 2000. Sommaire Un bref historique Larchitecture JAVA La plate-forme java Le compilateur Le format class La JVM Le JIT."— Transcription de la présentation:

1 Pierre-Yves ALIZON – Ingénieurs 2000

2 Sommaire Un bref historique Larchitecture JAVA La plate-forme java Le compilateur Le format class La JVM Le JIT Compiler Benchmark

3 Un bref historique

4 Java a été crée grâce aux initiatives de Sun en 1996 (date de la 1ère release officielle du JDK1) : 212 classes. 5 objectifs pour un nouveau langage : code efficace petite taille sécurité robustesse très grande portabilité En 1999, Javasoft (Sun) sort Java 2 (jdk 1.2) : 1520 classes.

5 Larchitecture de Java

6 Architecture JAVA : Vue globale Code Source class Toto { string str; public Toto(String name) { str = name; Compilation Java Runtime Byte-Code

7 Architecture JAVA : La plate-forme java Cest lensemble des classes de base dont a besoin un programme java pour sexécuter. Ces classes sont organisées en paquetages (packages) compressés en jar ou zip. Certains paquetages concernent : les entrées/sorties la sécurité la création dinterfaces graphiques …

8 Architecture JAVA : La plate-forme java Une plate-forme java est donc dépendante du jeu dAPI propre à lOS. Une partie de la plate-forme java est par conséquent écrite en langage natif. La plate-forme java nest pas portable, mais rend java portable lorsquelle est portée sur un système dexploitation.

9 Architecture JAVA : Le compilateur Java est à la fois un langage compilé et interprété. Le compilateur traduit les sources java en instructions binaires : le byte-code. Création dun fichier.class par fichier source.

10 Architecture JAVA : Le format class Chaque fichier class contient la définition dune seule classe ou interface exprimée en byte-code. Cest-à-dire : Son nom, celui de sa super classe et de ses interfaces Le noms des classes dont elle dépend Droits daccès Constantes Ses attributs Ses méthodes Le code des méthodes

11 Architecture JAVA : La JVM La Machine Virtuelle Java est la pièce maîtresse de larchitecture Java. La JVM interprète le byte-code généré par le compilateur. Une JVM doit répondre aux spécifications décrites par Sun (disponibles sur son site). Java est portable uniquement sur les plate-formes où une JVM a été portée. Sun propose son Runtime Environment pour Solaris, Windows, Linux, …

12 Architecture JAVA : La JVM La JVM, ou Runtime Interpreter, réalise toutes les activités dun vrai processeur. Exécution dans un environnement virtuel et sécurisé. A noter la présence dun Garbage Collector qui dé- alloue la mémoire non utilisée.

13 Architecture JAVA : La JVM Lors du lancement de la JVM, allocation dune pile et dun tas (possibilité en général de fixer sa taille initiale et maximale). Toutes les JVM comprennent le même jeu dinstructions (cest normal!). Les types de donnée sont prédéfinis et ont normalement la même taille quelque soit la JVM.

14 Architecture JAVA : La JVM Interpréteur Host OS Hardware Bytecode

15 Architecture JAVA : Le JIT compiler JIT compiler = Just In Time compiler Procédé de traduction dynamique du byte-code en langage machine. Lastuce : linterpréteur a déjà été compilé en langage machine. A chaque byte-code correspond donc une séquence de code binaire. Sauvegarde dune copie de chaque instruction binaire. Correspondance: byte-code instructions binaires

16 Architecture JAVA : Le JIT compiler Journalisation de lexécution et re-use de procédures assembleur. Possibilité dexécuter des méthodes entières beaucoup plus rapidement. De plus, le JIT compiler optimise par à-coups comme un compilateur. En théorie, un JIT compiler permet daccélérer une interprétation avec un facteur 10.

17 Architecture JAVA : Le JIT compiler Interpréteur JIT Compiler Host OS Hardware Bytecode Code machine

18 Le Benchmark

19 Cyrix MII – 300 (225 MHz) 64 Mo RAM Windows NT4 WorkStation Service Pack 5 C++ : Compilateur : Microsoft Visual C Java Compilateur : Sun JDK Interpréteurs : Sun JRE 1.3 IBM JRE Compilateurs Just in Time : Sun JRE 1.3 IBM JRE Benchmark : La plate-forme de test

20 1)Addition de 2 matrices dentiers 2)Addition de 2 matrices de réels 3)Multiplication de 2 matrices dentiers 4)Multiplication de 2 matrices de réels Benchmark : Les tests

21 Benchmark : Test = Complexité : Nb additions (n) = n 2 Addition de 2 matrices à valeurs entières

22 Benchmark : Test 2 1/1 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9 += Complexité : Nb additions (n) = n 2 1/1 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/ /3 1/2 2/5 1/3 2/7 1/4 2/9 Addition de 2 matrices à valeurs réelles

23 X= Complexité : Nb additions (n) = n 3 Nb multiplications (n) = n 3 Benchmark : Test 3 Multiplication de 2 matrices à valeurs entières

24 X= Complexité : Nb additions (n) = n 3 Nb multiplications (n) = n 3 Benchmark : Test 4 1/1 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9 1/1 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9 1,06.. … … … … … Multiplication de matrices à valeurs réelles

25 IBM JRE : -JIT disabled « jre –cp. –nojit Bench » -JIT enabled « jre –cp. Bench » sun JRE 1.3 : -JIT disabled « java –Xint Bench » -JIT enabled « java Bench » Benchmark : Java Les différentes plate-formes dexécution : Sun JDK (Java 2) « javac –O Bench.java » La compilation :

26 Benchmark : C++ Microsoft Visual C Utilisation de loption –O2 pour loptimisation La compilation :

27 Benchmark : Mesures Utilisation de la commande « time », commande portée sur Win32 par cygwin. Mesure du temps total dexécution en centièmes de secondes. Pour java, comptabilisation du temps de chargement de la VM. La mesure du temps dexécution :

28 Benchmark : Mesures Lexécutable prend en paramètre : Le type des données (int ou double) La taille de la matrice carrée Le type de lopération à exécuter (addition ou multiplication) Pour chacun des 4 tests et pour chaque JVM (et C++), on fait varier la taille de la matrice. Pour laddition, N=100, 200 et 500 Pour la multiplication, N=100, 200 et 300 Pour chaque donnée, on réalise la moyenne de 5 mesures. Déroulement du benchmark :

29 Benchmark : Mesures Daprès le calcul des complexités, une addition de 2 matrices 500*500 génèrera additions. Une multiplication de 2 matrices 300*300 : 27 millions dadditions 27 millions de multiplications Après la récolte de ces moyennes du temps dexécution, on les ajuste par rapport à celles du C++. Cest-à-dire que dans tous les graphiques ci- après, T(C++)=1; Déroulement du benchmark :

30 Benchmark : Mesures Mesure du temps dexécution :

31 Benchmark : Résultats du test 1 Addition de 2 matrices à valeurs entières

32 Benchmark : Résultats du test 2 Addition de 2 matrices à valeurs réelles

33 Benchmark : Résultats du test 3 Multiplication de 2 matrices à valeurs entières

34 Benchmark : Résultats du test 4 Multiplication de 2 matrices à valeurs réelles

35 Benchmark : Le debriefing Conclusions Avec lémergence des JIT compilers, la différence de performance entre les applications Java et C++ samenuise. Et même sil reste des différences, le programmeur bénéficie de la convivialité de java.


Télécharger ppt "Pierre-Yves ALIZON – Ingénieurs 2000. Sommaire Un bref historique Larchitecture JAVA La plate-forme java Le compilateur Le format class La JVM Le JIT."

Présentations similaires


Annonces Google