Le Hachage Parfait Fait-il un Parfait Test de Sous-typage?



Documents pareils
Mémoire de stage de Master 2

Chapitre VI- La validation de la composition.

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

Classes et Objets en Ocaml.

Traduction des Langages : Le Compilateur Micro Java

Évaluation et implémentation des langages

F. Barthélemy. 17 mai 2005

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Entraînement au concours ACM-ICPC

Les fonctions de hachage, un domaine à la mode

CORBA haute performance

Cours de Programmation 2

Rapport d activité. Mathieu Souchaud Juin 2007

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Machines virtuelles Cours 1 : Introduction

Cours de Génie Logiciel

TP1 : Initiation à Java et Eclipse

Annexe : La Programmation Informatique

Vulgarisation Java EE Java EE, c est quoi?

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Les diagrammes de modélisation

MÉTHODOLOGIE PROJET SYSTÈME D INFORMATION DÉCISIONNEL BI - BUSINESS INTELLIGENCE. En résumé :

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Développement d un interpréteur OCL pour une machine virtuelle UML.

Analyse,, Conception des Systèmes Informatiques

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Programmation des Applications Réparties. Parsers XML DOM et SAX

Machines Virtuelles. et bazard autour. Rémi Forax

Le programme d examens du Bureau canadien des conditions d admission en génie d Ingénieurs Canada englobe 19 domaines du génie.

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Groupe Eyrolles, 2004 ISBN :

Programmation Par Contraintes

Généralités sur le Langage Java et éléments syntaxiques.

Héritage presque multiple en Java (1/2)

Java 1.5 : principales nouveautés

Conception de circuits numériques et architecture des ordinateurs

Programmation Orientée Objet

Cours de Master Recherche

ÉPREUVE COMMUNE DE TIPE Partie D

IFT2255 : Génie logiciel

Objets et Programmation. origine des langages orientés-objet

Vérifier la qualité de vos applications logicielle de manière continue

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Sécuristation du Cloud

Conception des systèmes répartis

Evaluation des performances de programmes parallèles haut niveau à base de squelettes

Projet Active Object

Le génie logiciel. maintenance de logiciels.

Prise en compte des ressources dans les composants logiciels parallèles

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

CQP Développeur Nouvelles Technologies (DNT)

Patrons de Conception (Design Patterns)

Programmation Objet Java Correction

Etude d Algorithmes Parallèles de Data Mining

Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet

INF 4420: Sécurité Informatique Cryptographie II

INITIATION AU LANGAGE JAVA

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Analyse de sécurité de logiciels système par typage statique

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

IFT3913 Qualité du logiciel et métriques. Chapitre 2 Modèles de processus du développement du logiciel. Plan du cours

Communications performantes par passage de message entre machines virtuelles co-hébergées

IFT785 Approches Orientées Objets. FINAL Été Remise : Jeudi 19 août 2002 à 9h00 am

Cours A7 : Temps Réel

Evolution d Applications. Une Approche pour l Evolution des Systèmes Logiciels. Exemple : Le Serveur WWW. Applications Considérées

SQL Server 2008 et YourSqlDba

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Université de Bangui. Modélisons en UML

Contributions à l expérimentation sur les systèmes distribués de grande taille

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

I4 : Bases de Données

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

as Architecture des Systèmes d Information

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales

Génie Logiciel avec Ada. 4 février 2013

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

La salle d opération numérique intelligente

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Chapitre 2. Classes et objets

Programmation Objet - Cours II

Plateforme WikiJob spécifications

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Algorithmique, Structures de données et langage C

Java - la plateforme

I00 Éléments d architecture

Pentaho Business Analytics Intégrer > Explorer > Prévoir

Meta Object Facility. Plan

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

UML (Diagramme de classes) Unified Modeling Language

Transcription:

Le Hachage Parfait Fait-il un Parfait Test de Sous-typage? Roland Ducournau LIRMM CNRS Université Montpellier II Langages et Modèles à Objets Nîmes 2006 Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 1 / 25

Plan Plan 1 Contexte et Motivation 2 Du Hachage à la Perfection Hachage Parfait pplication à JV 3 Expérimentations et évaluation 4 Comparaison, Conclusion et Perspective Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 2 / 25

Plan Contexte et Motivation 1 Contexte et Motivation 2 Du Hachage à la Perfection Hachage Parfait pplication à JV 3 Expérimentations et évaluation 4 Comparaison, Conclusion et Perspective Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 3 / 25

Contexte et Motivation Implémentation des Objets Mécanismes primitifs ppel de méthodes ccès aux attributs Test de sous-typage Exigences d efficacité et de fonctionnalité Temps constant Espace linéaire Inlining Héritage multiple Compilation modulaire et chargement dynamique Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 4 / 25

Contexte et Motivation Héritage simple, typage statique Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 5 / 25

Contexte et Motivation Héritage simple, typage statique B B Problème : héritage multiple impossible Invariants de référence et de position Espace linéaire dans la taille de la relation de spécialisation Implémentation idéale Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 5 / 25

Contexte et Motivation Héritage simple, typage statique B B C B C Problème : héritage multiple impossible Invariants de référence et de position Espace linéaire dans la taille de la relation de spécialisation Implémentation idéale Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 5 / 25

Coloration Contexte et Motivation B C B C D B C D Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 6 / 25

Contexte et Motivation Coloration B C B C D B C D Problème : chargement dynamique impossible La coloration est une optimisation globale Invariants maintenus au prix de quelques trous Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 6 / 25

Contexte et Motivation Coloration B C B C D B C D Problème : chargement dynamique impossible La coloration est une optimisation globale Invariants maintenus au prix de quelques trous Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 6 / 25

Contexte et Motivation Coloration B C B C D B C D Problème : chargement dynamique impossible La coloration est une optimisation globale Invariants maintenus au prix de quelques trous Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 6 / 25

Contexte et Motivation ccès direct dans une grande table propriétés / superclasses a b c d e f g h i j k l... B C x x x x x x x x classes D E x x x x F x... Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 7 / 25

Contexte et Motivation ccès direct dans une grande table propriétés / superclasses a b c d e f g h i j k l... B C x x x x x x x x classes D E x x x x F x... Problème : espace non linéaire Table gigantesque, presque vide Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 7 / 25

Contexte et Motivation Tables de hachage h(c) C h() h(b) B Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 8 / 25

Contexte et Motivation Tables de hachage h(c) C h() h(b) B Problème : temps non constant recherche séquentielle à partir de la valeur de hachage efficacité spatiale médiocre (au moins 2) Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 8 / 25

Contexte et Motivation Question Mais comment diable font-ils donc avec des tables de hachage? Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 9 / 25

Plan Du Hachage à la Perfection 1 Contexte et Motivation 2 Du Hachage à la Perfection Hachage Parfait pplication à JV 3 Expérimentations et évaluation 4 Comparaison, Conclusion et Perspective Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 10 / 25

Du Hachage à la Perfection Hachage Parfait Test de sous-typage par table de hachage Principe Soit 2 classes C et D, ou une classe C et un objet o : D C id C est trouvé dans la table de D o C id C est trouvé dans la table de o Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 11 / 25

Du Hachage à la Perfection Hachage Parfait Test de sous-typage par table de hachage Principe Soit 2 classes C et D, ou une classe C et un objet o : D C id C est trouvé dans la table de D o C id C est trouvé dans la table de o Particularité u chargement de la classe D, toutes ses super-classes sont connues. plus besoin d ajout, ni de retrait La table de D peut être optimisée statiquement Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 11 / 25

Du Hachage à la Perfection Hachage Parfait Test de sous-typage par table de hachage Principe Soit 2 classes C et D, ou une classe C et un objet o : D C id C est trouvé dans la table de D o C id C est trouvé dans la table de o Particularité u chargement de la classe D, toutes ses super-classes sont connues. plus besoin d ajout, ni de retrait La table de D peut être optimisée statiquement Solution : le hachage parfait [Sprugnoli 77] hachage sans collision temps constant, espace à déterminer Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 11 / 25

Hachage parfait Du Hachage à la Perfection Hachage Parfait Principe un univers E, un ensemble I E à hacher, une fonction de hachage h : E [0..H 1], une table T de taille H. h est injective sur I x I ssi T [h(x)] = x Problème Etant donné I, calculer h et H Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 12 / 25

Du Hachage à la Perfection Hachage Parfait pplication au test de sous-typage Pour chaque classe C E = [0..N 1] ensemble des identifiants de classes I C = {id D C D} fonction h C : [0..N 1] [0..H C 1] injective sur I C avec h C (x) = hash(x, H C ) Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 13 / 25

Du Hachage à la Perfection Hachage Parfait pplication au test de sous-typage Pour chaque classe C E = [0..N 1] ensemble des identifiants de classes I C = {id D C D} fonction h C : [0..N 1] [0..H C 1] injective sur I C avec h C (x) = hash(x, H C ) Quelle fonction pour hash? Exigences : mono-instruction, si possible mono-cycle Deux candidates naturelles : reste de division entière (mod) et conjonction booléenne (and) Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 13 / 25

Du Hachage à la Perfection Hachage Parfait pplication au test de sous-typage Pour chaque classe C E = [0..N 1] ensemble des identifiants de classes I C = {id D C D} fonction h C : [0..N 1] [0..H C 1] injective sur I C avec h C (x) = hash(x, H C ) Quelle fonction pour hash? Exigences : mono-instruction, si possible mono-cycle Deux candidates naturelles : reste de division entière (mod) et conjonction booléenne (and) Problème : calculer H C minimal tq h C soit injective? algorithme polynomial facile Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 13 / 25

pplications Du Hachage à la Perfection pplication à JV Test de sous-typage en C++... ou dans tout langage en héritage multiple pur et avec chargement dynamique Langage à la JV... ou tout autre langage en sous-typage multiple 2 applications : test de sous-typage quand la cible est une interface appel de méthode quand le receveur est typé par une interface Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 14 / 25

Du Hachage à la Perfection pplication à JV Implémentation pour JV table de hachage méthodes attributs de l instance Table bidirectionnelle Partie positive pour les classes, comme en héritage simple Partie négative pour les interfaces, avec hachage parfait Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 15 / 25

Du Hachage à la Perfection pplication à JV Implémentation pour JV H id_d? table de hachage méthodes h(d) Table bidirectionnelle Test de sous-typage pour interfaces o D? attributs de l instance Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 15 / 25

Du Hachage à la Perfection pplication à JV Implémentation pour JV H id_d? #foo table de hachage méthodes de D h(d) attributs de l instance Table bidirectionnelle ppel de méthode pour interfaces (invokeinterface) D x ; x.foo(arg) Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 15 / 25

Du Hachage à la Perfection Motivation pour JV pplication à JV JV normal utilisation fréquente des downcasts manque de généricité en 1.4 et de invokeinterface suivant le style de programmation / conception Langage SCL JV + mixins compile JVM ou DOTNET CRL les attributs sont médiatisés par des accesseurs tous les types sont des interfaces invokeinterface est omniprésent Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 16 / 25

Plan Expérimentations et évaluation 1 Contexte et Motivation 2 Du Hachage à la Perfection Hachage Parfait pplication à JV 3 Expérimentations et évaluation 4 Comparaison, Conclusion et Perspective Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 17 / 25

Expérimentations et évaluation Description de l expérimentation Benchmarks Famille de benchmarks classiques, utilisés depuis plus de 10 ans par l ensemble de la communauté d implémentation des objets 17 hiérarchies, plus de 30000 classes Simulation Plate forme de simulation en LISP, utilisée depuis 2000 pour évaluer toutes les implémentations (C++, coloration, etc.) Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 18 / 25

Expérimentations et évaluation Résultats pour JV Espace et temps appel de méthode test sous-typage nég technique cycles code cycles code pos COL 2 2L+B 16 3 2L+2 8 4 ɛ D 3L+B 19 4 2L+3 9 7 4.2 Latences de chargement : L = 3 de saut indirect : B = 10 de division entière : D = 6 Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 19 / 25

Expérimentations et évaluation Résultats pour JV Espace et temps appel de méthode test sous-typage nég technique cycles code cycles code pos COL 2 2L+B 16 3 2L+2 8 4 ɛ D 3L+B 19 4 2L+3 9 7 4.2 PH and 4L+B+2 24 7 3L+4 13 7 1.2 PH mod 4L+B+D+1 29 7 3L+D+3 18 7 0.4 Latences de chargement : L = 3 de saut indirect : B = 10 de division entière : D = 6 Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 19 / 25

Expérimentations et évaluation Résultats pour JV Espace et temps appel de méthode test sous-typage nég technique cycles code cycles code pos COL 2 2L+B 16 3 2L+2 8 4 ɛ D 3L+B+1 20 5 2L+3 9 7 2.1 PH and 4L+B+3 25 8 3L+4 13 7 0.6 PH mod 4L+B+D+1 30 8 3L+D+3 18 7 0.2 Presqu assez rapide, presqu assez compact! adresses offsets : 1 cycle et 1 instruction en plus, espace divisé par 2 3 D 25 cycles, suivant processeurs et données Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 20 / 25

Expérimentations et évaluation Résultats pour JV Espace et temps appel de méthode test sous-typage nég technique cycles code cycles code pos COL 2 2L+B 16 3 2L+2 8 4 ɛ D 3L+B+1 20 5 2L+3 9 7 2.1 PH and 4L+B+3 25 8 3L+4 13 7 0.6 PH mod 4L+B+D+1 49 8 3L+D+3 37 7 0.2 Presqu assez rapide, presqu assez compact! adresses offsets : 1 cycle et 1 instruction en plus, espace divisé par 2 3 D 25 cycles, suivant processeurs et données Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 20 / 25

Plan Comparaison, Conclusion et Perspective 1 Contexte et Motivation 2 Du Hachage à la Perfection Hachage Parfait pplication à JV 3 Expérimentations et évaluation 4 Comparaison, Conclusion et Perspective Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 21 / 25

Comparaison, Conclusion et Perspective utres travaux Test de sous-typage codage d ordres (it-kaci, Caseau, Habib, Vitek, Zibin,..) efficace mais incompatible avec le chargement dynamique En JV techniques ad hoc : hachage + cache taille constante espace mal optimisé et tests supplémentaires techniques dépareillées pas d inlining mais efficacité statistique grâce au cache Le hachage parfait se compare honorablement compatible avec chargement dynamique efficacité constante et plutôt bonne Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 22 / 25

Comparaison, Conclusion et Perspective Conclusion Un test de sous-typage presque parfait temps constant assez petit espace pas trop grand séquence assez courte compatible héritage multiple et chargement dynamique Une invocation d interface presque parfaite pour les langages en sous-typage multiple avec une technique qui sert aux deux Expérimentation réelle... cherche machine virtuelle JV. Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 23 / 25

Perspective Comparaison, Conclusion et Perspective Mais un test de sous-typage pas parfait PH and prend trop de place : dégradation marquée avec la taille la division entière n est pas efficace en temps le temps de and pour l espace de mod serait parfait! méliorations hachage quasi-parfait : décevant! PH + cache : 4 instructions + 2 cycles en plus ou 2L + 2 cycles au lieu de 3L + D + 3 fonction hash à deux opérations mono-cycles addition, décalage et opérations bit-à-bit 1 cycle et 1 ou 2 instructions supplémentaires pour un espace réduit de plus de moitié Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 24 / 25

Comparaison, Conclusion et Perspective Un dernier doute Depuis 30 ans, personne n aurait songé à se servir du hachage parfait pour implémenter les objets??? Roland Ducournau (LIRMM) Hachage Parfait et Test de Sous-typage LMO 06 25 / 25