1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Luận văn thạc sĩ VNU PROFILING SANS EXÉCUTION

41 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Profiling Sans Exécution
Tác giả Bui Nguyen-Minh
Người hướng dẫn Professeur Danny Dubé
Trường học Universitộ Laval
Chuyên ngành Informatique
Thể loại mémoires
Năm xuất bản 2006
Thành phố Québec
Định dạng
Số trang 41
Dung lượng 386,11 KB

Nội dung

PROFILING SANS EXÉCUTION Mémoire de fin d’études Master d’Informatique Etudiant : BUI Nguyen-Minh Sous la direction de : Professeur Danny DUBÉ Département d’informatique, Université LAVAL Institute de la Francophonie pour l’Informatique Novembre 2006 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Remerciements Je voudrais remercier professeur Danny Dubé au Département d’Informatique et de Génie Logiciel l’Université Laval pour tout ce qu’il a fait pour moi pendant mon stage, même je n’étais pas très autonome Je tiens également remercier tous les professeurs l’IFI Merci mes parents et mes amis LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Résumé Dans cette mémoire, nous voudrions présenter une autre faỗon pour faire le profiling Les mộthodes courantes, en gộnộral, elles ajoutent quelques morceaux de code sources et exécutent le programme pour calculer le profil d’un programme Par contre, notre méthode, elle n’exécute pas le programme mais essaye de construire un système qui modèle l’exécution du programme puis calcule le profil basé sur le résultat obtenu quand on résout le système Cette méthode se compose de deux phases La première phase vise calcul le résultat abstrait en utilisant un système de contrainte Dans la deuxième phase, utilisant le résultat de la première phase, on construit et résout un système d’équation pour obtenir un résultat plus détaillé Pourtant, la méthode de profiling sans exécution reste de nombreux de problèmes sur le processus de la modélisation le programme, la solution le système, la convergence du système et l’évaluation Nous abordons aussi quelques idées générales sur le langage fonctionnel et le langage de programmation Scheme LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Table des matières Introduction 1.1 Profiling 1.2 Types de profiling 1.3 Sujet de stage 1 2 Langage fonctionnel 2.1 Concepts 2.2 Particularité des langages fonctionnels 2.2.1 Absence des effets de bord 2.2.2 Transparence référentielle 2.2.3 Peu de structures de contrôle 2.2.4 Fonctions comme objets de première classe 2.2.5 Gestion de la mộmoire de faỗon automatiquement 2.3 Lambda calcul 2.3.1 Idées générales 2.3.2 La syntaxe du lambda calcul 2.3.3 Alpha réduction 2.3.4 Beta réduction 2.4 Schème 3 3 6 6 8 Pré-traitement 3.1 Langage analyser 3.2 Analyse de jetons 11 3.3 L’algorithme en bref 11 Analyse abstraite 4.1 Valeurs abstraites 4.2 Idée générale 4.3 Génération des contraintes 4.4 Commentaires 4.5 Un exemple 13 13 14 14 17 17 i LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Analyse statique 5.1 Idée générale 5.1.1 Définitions 5.2 Système d’équation 5.2.1 Règles pour calculer Πl : 5.2.2 Règles pour calculer Πx : 5.2.3 Règles pour calculer χl et Kl (l ) : 5.3 Vérifier les équations 5.4 Résoudre le système d’équations 5.5 Un exemple Conclusion 19 19 19 20 20 22 22 24 29 31 34 ii LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chapitre Introduction 1.1 Profiling Les outils pour analyser les programmes (profiling) jouent un rôle très important dans la compréhension des comportements des programmes En effet, les constructeurs de matériel informatique ont en besoin pour évaluer comment les programmes marcheront dans la nouvelle architecture Ils sont aussi indispensables pour les programmeurs dans l’analyse de leurs codes sources et dans l’identification des morceaux importants D’autre part, le profiling est considéré, par les compilateurs, un outil de mesurer les algorithmes d’optimisation 1.2 Types de profiling En général, il y a deux types de profiling : Analyse statique de programmes et analyse dynamique de programmes L’analyse statique de programmes est une famille de techniques permettant de dériver des résultats sur l’exécution de programmes sans exécuter ces derniers Elle se distingue ainsi de l’analyse dynamique ou test, qui revient essayer le programme sur différentes entrées jugées représentatives, afin de vérifier s’il produit les résultats attendus sur ces entrées L’analyse dynamique de programmes est une famille de techniques d’analyse d’exécution qui mesure le comportement d’un programme, en particulier la fréquence et la durée des appels de fonction, quand il fonctionne La sortie est une suite des événements enregistrés (une trace) ou d’un résumé statistique des événements observés (un profil ) LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Actuellement, il existe un bon nombre de logiciels qui permettent de faire l’analyse dynamique de programmes, par exemple : grof, ATOM Les profileurs emploient une grande variété de techniques pour rassembler des données, y compris des interruptions, l’instrumentation de code, des hooks de système d’exploitation, et des compteurs d’exécution L’instrumentation de code, au temps de la compilation, il insère le code dans le programme analyser Alors le code inséré produit des données d’analyse Le logiciel ATOM utilise cette technique 1.3 Sujet de stage Notre stage a le profiling sans exécution comme le sujet principal Cette méthode de profiling consiste essayer d’estimer le résultat d’un programme et de mesurer ses comportements sans exécuter le programme LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chapitre Langage fonctionnel 2.1 Concepts Il y a trois types de langage de programmation : Programmation impérative, programmation fonctionnelle et programmation logistique La programmation logique est une forme de programmation dont l’essence est de définir des règles de logique mathématique au lieu de fournir une succession d’instructions que l’ordinateur exécuterait Le premier langage de programmation logique est Prolog La programmation impérative est le style de programmation le plus utilisé, dans lequel les instructions qui modifient les données sont exécutées simplement les unes après les autres, avec quelques structures de contrôle permettant de créer des boucles ou des alternatives Le troisième type de langage de programmation est le style de programmation dans lequel on ne programme qu’en écrivant des fonctions qui appellent d’autres fonctions Ce paradigme de programmation fournie une abstraction très puissante et très bien connue en mathématiques : la fonction 2.2 2.2.1 Particularité des langages fonctionnels Absence des effets de bord Dans la programmation fonctionnelle, on saffranchit de faỗon radicale des effets de bord en interdisant toute opération d’assignation La programmation fonctionnelle souligne l’application des fonctions, contrairement la programmation impérative qui met l’accent sur les changements d’état et l’exécution des commandes séquentielles C’est pour cette raison qu’on peut éviter les effets de bord en utilisant ce LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com type de langage En effet, pour décrire un programme, au lieu d’une machine d’états, le paradigme fonctionnel utilise un embtement de fonctions considéré comme des btes noires qui sont imbriqes les unes dans les autres L’effet de bord est un effet dans lequel une fonction modifie un état autre que sa valeur de retour Par exemple une fonction change la valeur d’une variable globale, donc quand on exécute cette fonction on peut obtenir deux résultats différents int x = ; int getx() { x++ ; return x ; } Cela rende souvent le comportement des programmes plus difficile comprendre 2.2.2 Transparence référentielle Une autre propriété liée la programmation fonctionnelle, c’est la transparence référentielle Une expression est transparente de manière référentielle si elle peut être remplacée dans le code source de programme sans changer le résultat final du programme En d’autres termes, cela résulte en un programme avec les même effets et sorties pour les mêmes entrées Un grand avantage d’écrire du code avec un style référentiellement transparent est que l’analyse de code statique est plus facile et que des transformations d’amélioration de code sont automatiquement possibles Par exemple, en programmation en C, il y a une pénalité de performance pour l’inclusion d’une fonction dans une boucle, même si l’appel de fonction pourrait être déplacé l’extérieur de la boucle sans changer les résultats du programme Le programmeur pourrait être forcé faire ce déplacement, peut-être au dépend de la lisibilité du code Mais, si le compilateur est capable de déterminer si l’appel de la fonction est référentiellement transparent, il peut alors effectuer automatiquement cette transformation int square(int x) { return (x*x) ; } LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Donc, ce morceau de code : int foo(int n) { for (int i = ; i

Ngày đăng: 06/12/2022, 15:45