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

Slides:



Advertisements
Présentations similaires
Speedup Prediction for Selective Compilation of Embedded Java Programs
Advertisements

Cours d’algorithmique
Architecture de machines Le microprocesseur
Langage C# et Plate-forme .NET
Algorithmes et structures de données 7ème cours
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Structure des tables de la HDB – Outil de gestion de larchivage Groupe Bases de Données : JM. Rochat – J.Guyot – J.Chinkumo. 26 janvier 2014 Réunion ESRF/Soleil.
Présentation de l’Architecture Windows NT
L’architecture .net et ASP.net
Paquetages: Définitions Les classes Java sont regroupées en paquetages (packages en anglais) Ils correspondent aux « bibliothèques » des autres langages.
(Classes prédéfinies – API Java)
Performances 1 Évolution : Performance. Performances 2 Évolution : Mémoire.
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Objectifs Identifier l’interface entre le logiciel de plus bas niveau et le matériel Comprendre la problématique de l’architecture du jeu d’instruction.
Exercice Notre programme s'exécute en 10 secondes sur A, qui dispose d'une horloge à 100Mhz. Nous tentons d'aider un concepteur à construire une machine.
Mémoire & Processus Cours SE - SRC
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Autorisations Utilisation eCATT
Architecture de machines Principes généraux
Chapitre 8 : L’architecture de base des ordinateurs
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
Projet de veille technologique
INF 111 PROGRAMMATION ORIENTÉ-OBJET
MAGNIN Pierre 2 MIC D MAILLARD Adrien 2 MIC D Soutenance le 17/06/09.
Restriction daccès aux logiciels et aux matériels Problème de licence Nicolas CHABANOLES Matière : SRR Lieu: UFRIMA.
Création, configuration et déploiement d’un OS Windows Embedded CE.
Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE
Programme et Langage C++
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Dan Bismuth Tutrices : Marie-Lise Flottes - Joanne Acland
Programmation multimédia 3
Introduction à la programmation (Java)
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
Microsoft dot Net Extrait du cours. La programmation fenêtrée facile. Une approche objet. Philippe Garraud: Formateur indépendant.
Structures des Systèmes d’Exploitation
Systèmes Superscalaires et VLIW
Programmation concurrente
Microsoft .NET.
Formation JAVA. Par: SILMI.S
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 1 : Introduction.
Les systèmes multiplateformes
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
Informatique et Unix Jean-Pierre Gallou
Lycée ELKHAWARIZMI De SAFI
Programmer en langage c
Cours 1 1 Java. Cours 1 2 Plan général 1.Introduction 2.Les types primitifs, évaluation d’expressions 3.Instructions for, if…. 4.Introduction de l’objet,
La programmation système
Programmation Système et Réseau
Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
IUT du Limousin L.U.P Michel Vergnaud Programmation Objet - Java.
Cours MIAGE « Architectures Orientées Services »Henry Boccon-GibodCours MIAGE « Architectures Orientées Services »Henry Boccon-Gibod 1 Architectures Orientées.
Master 1 SIGLIS Systèmes d’Information pour l’entreprise – Java RMI Stéphane Tallard Mise en œuvre de l’exemple Bonjour RMI Master 1 SIGLIS1 Intégration.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
UE MAREP Cours 12 : Révisions
Patricia Renault UPMC 2005/2006
1 Démo SoftGrid. Le Séquenceur SoftGrid Utilisation d’un « packageur » SoftGrid Possibilité de “séquencer” en ligne de commande (CLI) Existence d’outils.
Philippe Gandy - 1 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Gestion des documents internes avec SQL Server 2005 Date de publication : janvier 2006.
Exemple d’utilisation de l’outil de profilage prof La commande prof de Unix.
1.1: notions de bases de l’informatique
Initiation aux bases de données et à la programmation événementielle
Introduction à Java Caractéristiques principales Environnement Java Environnement de développement Compilation et exécution.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Transcription de la présentation:

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

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

Un bref historique

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.

L’architecture de Java

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

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 …

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.

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.

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

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, …

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.

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.

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

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

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.

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

Le Benchmark

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 :

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

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

+ = 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 2 1 2/3 1/2 2/5 1/3 2/7 1/4 2/9 + = Complexité : Nbadditions (n) = n2

X = Complexité : Nbadditions (n) = n3 Nbmultiplications (n) = n3 Benchmark : Test 3 Multiplication de 2 matrices à valeurs entières 2 3 4 5 6 8 9 2 3 4 5 6 8 9 30 36 42 66 81 96 102 126 150 X = Complexité : Nbadditions (n) = n3 Nbmultiplications (n) = n3

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

Sun JDK 1.2.2 (Java 2) IBM JRE 1.1.8 : sun JRE 1.3 : Benchmark : Java La compilation : Sun JDK 1.2.2 (Java 2) « javac –O Bench.java » Les différentes plate-formes d’exécution : IBM JRE 1.1.8 : 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 : C++ La compilation : Microsoft Visual C++ 6.0 Utilisation de l’option –O2 pour l’optimisation

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.

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.

Benchmark : Mesures Déroulement du benchmark : D’après le calcul des complexités, une addition de 2 matrices 500*500 génèrera 250 000 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;

Benchmark : Mesures Mesure du temps d’exécution :

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

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

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

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

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.