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

Java vs. C++ Pierre-Yves ALIZON – Ingénieurs 2000.

Présentations similaires


Présentation au sujet: "Java vs. C++ Pierre-Yves ALIZON – Ingénieurs 2000."— Transcription de la présentation:

1 Java vs. C++ Pierre-Yves ALIZON – Ingénieurs 2000

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

3 Un bref historique

4 En 1999, Javasoft (Sun) sort Java 2 (jdk 1.2) : 1520 classes.
Un bref historique 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 L’architecture 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 Certains paquetages concernent : les entrées/sorties la sécurité
Architecture JAVA : La plate-forme java C’est l’ensemble des classes de base dont a besoin un programme java pour s’exé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 d’interfaces graphiques

8 Une plate-forme java est donc dépendante du jeu d’API propre à l’OS.
Architecture JAVA : La plate-forme java Une plate-forme java est donc dépendante du jeu d’API propre à l’OS. Une partie de la plate-forme java est par conséquent écrite en langage natif. La plate-forme java n’est pas portable, mais rend java portable lorsqu’elle est portée sur un système d’exploitation.

9 Java est à la fois un langage compilé et interprété.
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 d’un fichier .class par fichier source.

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

11 La JVM interprète le byte-code généré par le compilateur.
Architecture JAVA : La JVM La Machine Virtuelle Java est la pièce maîtresse de l’architecture 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 Exécution dans un environnement virtuel et sécurisé.
Architecture JAVA : La JVM La JVM, ou Runtime Interpreter, réalise toutes les activités d’un vrai processeur. Exécution dans un environnement virtuel et sécurisé. A noter la présence d’un Garbage Collector qui dé-alloue la mémoire non utilisée.

13 Toutes les JVM comprennent le même jeu d’instructions (c’est normal!).
Architecture JAVA : La JVM Lors du lancement de la JVM, allocation d’une pile et d’un tas (possibilité en général de fixer sa taille initiale et maximale). Toutes les JVM comprennent le même jeu d’instructions (c’est 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
Bytecode Interpréteur Host OS Hardware

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

16 Journalisation de l’exécution et re-use de procédures assembleur.
Architecture JAVA : Le JIT compiler Journalisation de l’exécution et re-use de procédures assembleur. Possibilité d’exé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 d’accélérer une interprétation avec un facteur 10.

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

18 Le Benchmark

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

20 Addition de 2 matrices d’entiers Addition de 2 matrices de réels
Benchmark : Les tests Addition de 2 matrices d’entiers Addition de 2 matrices de réels Multiplication de 2 matrices d’entiers Multiplication de 2 matrices de réels

21 + = Complexité : Nbadditions (n) = n2 Benchmark : Test 1 2 3 4 5 6 8 9
Addition de 2 matrices à valeurs entières + = Complexité : Nbadditions (n) = n2

22 + = Complexité : Nbadditions (n) = n2 Benchmark : Test 2 1/1 1/2 1/3
Addition de 2 matrices à valeurs réelles 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 /3 1/2 2/5 1/3 2/7 1/4 2/9 + = Complexité : Nbadditions (n) = n2

23 X = Complexité : Nbadditions (n) = n3 Nbmultiplications (n) = n3
Benchmark : Test 3 Multiplication de 2 matrices à valeurs entières X = Complexité : Nbadditions (n) = n3 Nbmultiplications (n) = n3

24 X = Complexité : Nbadditions (n) = n3 Nbmultiplications (n) = n3
Benchmark : Test 4 Multiplication de matrices à valeurs réelles 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.. … … … … … X = Complexité : Nbadditions (n) = n3 Nbmultiplications (n) = n3

25 Sun JDK 1.2.2 (Java 2) IBM JRE 1.1.8 : sun JRE 1.3 :
Benchmark : Java La compilation : Sun JDK (Java 2) « javac –O Bench.java » Les différentes plate-formes d’exécution : 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 »

26 Benchmark : C++ La compilation : Microsoft Visual C++ 6.0 Utilisation de l’option –O2 pour l’optimisation

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

28 Benchmark : Mesures L’exécutable prend en paramètre :
Déroulement du benchmark : L’exécutable prend en paramètre : Le type des données (int ou double) La taille de la matrice carrée Le type de l’opé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 l’addition, 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.

29 Benchmark : Mesures Déroulement du benchmark : D’aprè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 d’additions 27 millions de multiplications Après la récolte de ces moyennes du temps d’exécution, on les ajuste par rapport à celles du C++. C’est-à-dire que dans tous les graphiques ci-après, T(C++)=1;

30 Benchmark : Mesures Mesure du temps d’exé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++ s’amenuise. Et même s’il reste des différences, le programmeur bénéficie de la convivialité de java.


Télécharger ppt "Java vs. C++ Pierre-Yves ALIZON – Ingénieurs 2000."

Présentations similaires


Annonces Google