Outils pour utilisateurs

Outils du site


issue131:mon_opinion

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
issue131:mon_opinion [2018/04/10 07:57] d52frissue131:mon_opinion [2018/04/20 14:28] (Version actuelle) andre_domenech
Ligne 7: Ligne 7:
 Bien que les compilateurs soient au cœur même du développement logiciel et que la vitesse et la précision de toute application rencontrée par le lecteur dépendent finalement de la qualité du compilateur utilisée pour la produire, la plupart des utilisateurs n'y pensent vraiment pas beaucoup. Il se peut que certains des connaisseurs reconnaissent l'acronyme GCC, mais ce serait sans doute tout ce qu'ils savent du concept. Bien que les compilateurs soient au cœur même du développement logiciel et que la vitesse et la précision de toute application rencontrée par le lecteur dépendent finalement de la qualité du compilateur utilisée pour la produire, la plupart des utilisateurs n'y pensent vraiment pas beaucoup. Il se peut que certains des connaisseurs reconnaissent l'acronyme GCC, mais ce serait sans doute tout ce qu'ils savent du concept.
  
-Clang est un compilateur de langage C qui est plutôt inhabituel, dans le sens où il n'est, en fait, qu'un seul composant de la chaîne complète des outils. L'autre partie, en arrière plan, est le projet LLVM, qui peut être combiné avec d'autres interfaces pour fournir aux compilateurs une grande variété d'autres langages de programmation.+Clang est un compilateur de langage C qui est plutôt inhabituel, dans le sens où il n'est, en fait, qu'un seul composant de la chaîne complète des outils. L'autre partie, en arrière-plan, est le projet LLVM, qui peut être combiné avec d'autres interfaces pour fournir aux compilateurs une grande variété d'autres langages de programmation.
  
-Clang a servi à l'intérieur de Mac OS d'Apple et d'Android de Google, et, plus récemment, comme option principale de la compilation du système pour FreeBSD et OpenBSD. Il y a eu des efforts visant à donner l'accès à ce compilateur au sein de l'écosystème des distributions GNU/Linux, bien que très peu n'aient migré du plus habituel GNU C Compiler (GCC) vers Clang. OpenMandriva se trouvait à la une en 2016 à cause de cela.+Clang a servi à l'intérieur de Mac OS d'Apple et d'Android de Google, et, plus récemment, comme option principale de la compilation du système pour FreeBSD et OpenBSD. Il y a eu des efforts visant à donner l'accès à ce compilateur au sein de l'écosystème des distributions GNU/Linux, bien que très peu aient migré du plus habituel GNU C Compiler (GCC) vers Clang. OpenMandriva se trouvait à la une en 2016 à cause de cela.
  
  
Ligne 24: Ligne 24:
 # aptitude install clang # aptitude install clang
  
-Après le téléchargement et l'installation de paquets logiciel atteignant 27,4 Mo, j'avais accès à la commande Clang. Après avoir lu la documentation, j'avais l'impression que la plupart des commandes et paramètres du compilateur les plus souvent utilisées fonctionnent à peu près comme avec GCC.+Après le téléchargement et l'installation de paquets logiciels atteignant 27,4 Mo, j'ai eu accès à la commande Clang. Après avoir lu la documentation, j'avais l'impression que la plupart des commandes et paramètres du compilateur les plus souvent utilisées fonctionnent à peu près comme avec GCC.
  
-Ensuite, j'ai décidé d'écrire deux courts programmes test que je compilerais avec les deux pour les tester. Le premier test était une routine très classique de tri de tableaux, qui a compilé en 0,03 secondes avec GCC et en 0,05 secondes avec Clang. Les fichiers exécutables faisaient 9040 bytes avec GCC et 8376 bytes avec Clang. Les temps d'exécution étaient de 3,12 s avec la version GCC et 0,004 s avec le fichier binaire produit par Clang. Pour ce qui concerne le deuxième programme test, une multiplication de matrice, les temps de compilation furent respectivement 0,04 s et 0,05 s, la taille des fichiers étaient 9056 et 8544 bytes et les temps d'exécution étaient de 6,62 et 6,19 s.+Ensuite, j'ai décidé d'écrire deux courts programmes tests que je compilerais avec les deux pour les tester. Le premier test était une routine très classique de tri de tableaux, qui a compilé en 0,03 secondes avec GCC et en 0,05 secondes avec Clang. Les fichiers exécutables faisaient 9 040 bytes avec GCC et 8 376 bytes avec Clang. Les temps d'exécution étaient de 3,12 s avec la version GCC et 0,004 s avec le fichier binaire produit par Clang. Pour ce qui concerne le deuxième programme test, une multiplication de matrice, les temps de compilation furent respectivement 0,04 s et 0,05 s, la taille des fichiers était de 9 056 et 8 544 bytes et les temps d'exécution étaient de 6,62 et 6,19 s.
  
 **Though the test set is rather small and is very much geared toward computationally intensive applications using no libraries other than standard C routines, it is clear that both compilation suites perform well, and are quite comparable to each other. Contrary to one of the advantages set forward, compilation times with Clang were in fact a tad longer than with Gcc, though executable file sizes and execution times were best with Clang. **Though the test set is rather small and is very much geared toward computationally intensive applications using no libraries other than standard C routines, it is clear that both compilation suites perform well, and are quite comparable to each other. Contrary to one of the advantages set forward, compilation times with Clang were in fact a tad longer than with Gcc, though executable file sizes and execution times were best with Clang.
Ligne 38: Ligne 38:
 gcc `pkg-config --cflags gtk+-3.0` test_gtk.c -o test_gtk `pkg-config --libs gtk+-3.0`** gcc `pkg-config --cflags gtk+-3.0` test_gtk.c -o test_gtk `pkg-config --libs gtk+-3.0`**
  
-Bien que le jeu de test soit plutôt petit et totalement axé sur des applications de calcul intensif avec aucune autre bibliothèque que celle des routines C standard, il est évident que les performances des deux suites de compilation sont bien et que les deux sont tout à fait comparables. Contrairement à l'un des avantages annoncés, les temps de compilation avec Clang étaient, en fait, un chouïa plus longs qu'avec GCC, bien que la taille des fichiers exécutables et les temps d'exécutions soient mieux avec Clang.+Bien que le jeu de test soit plutôt petit et totalement axé sur des applications de calcul intensif avec aucune autre bibliothèque que celle des routines C standard, il est évident que les performances des deux suites de compilation sont bien et que les deux sont tout à fait comparables. Contrairement à l'un des avantages annoncés, les temps de compilation avec Clang étaient, en fait, un chouïa plus longs qu'avec GCC, bien que la taille des fichiers exécutables et les temps d'exécution soient mieux avec Clang.
  
-Toutefois, la plupart de véritables applications nécessitent l'utilisation de bibliothèques externes présentent dans le système. Pour pouvoir comparer Clang et GCC dans ce cas-là, j'ai essayé un court programme de démonstration qui utilise les bibliothèques GTK version 3. La compilation est un tout petit peu plus complexe, puisque, auparavant, ces bibliothèques doivent être installées :+Toutefois, la plupart des véritables applications nécessitent l'utilisation de bibliothèques externes présentes dans le système. Pour pouvoir comparer Clang et GCC dans ce cas-là, j'ai essayé un court programme de démonstration qui utilise les bibliothèques GTK version 3. La compilation est un tout petit peu plus complexe, puisque, auparavant, ces bibliothèques doivent être installées :
  
 # aptitude install libgtk-3-dev # aptitude install libgtk-3-dev
Ligne 57: Ligne 57:
 At the time of writing (early 2018), Clang still seems to perform less well during compilation on a Gcc-dominated system. As for executable file sizes and execution times - where applicable in background tasks - it is probably fair to say that there are no major differences in file sizes, while pure C programs with no library invocations benefit considerably from the use of Clang as regard execution times.** At the time of writing (early 2018), Clang still seems to perform less well during compilation on a Gcc-dominated system. As for executable file sizes and execution times - where applicable in background tasks - it is probably fair to say that there are no major differences in file sizes, while pure C programs with no library invocations benefit considerably from the use of Clang as regard execution times.**
  
-Comme mentionné ci-dessus, les paramètres des compilateurs sont similaires et celle-ci fut facilement adapté pour Clang :+Comme mentionné ci-dessus, les paramètres des compilateurs sont similaires et celui-ci fut facilement adapté pour Clang :
  
 clang `pkg-config --cflags gtk+-3.0` test_gtk.c -o test_gtk `pkg-config --libs gtk+-3.0` clang `pkg-config --cflags gtk+-3.0` test_gtk.c -o test_gtk `pkg-config --libs gtk+-3.0`
  
-Les temps de compilation était de 0,29 sec pour GCC et de 0,54 sec pour Clang. Cependant, cette fois-ci, les fichiers exécutables faisaient 14 808 bytes pour la version compilé avec GCC et 15 440 bytes pour Clang.+Les temps de compilation était de 0,29 sec pour GCC et de 0,54 sec pour Clang. Cependant, cette fois-ci, les fichiers exécutables faisaient 14 808 bytes pour la version compilée avec GCC et 15 440 bytes pour Clang.
  
 Au moment où j'écris ces lignes (début 2018), Clang semble toujours donner de moins bons résultats pendant la compilation sur un système dominé par GCC. Quant à la taille des fichiers exécutables et aux temps d'exécution - lors de tâches en arrière plan, le cas échéant - l'on peut sans doute dire qu'il n'y a pas de différences importantes dans la taille des fichiers, alors que des programmes en C pur sans invocations de bibliothèques sont considérablement avantagés, par rapport aux temps d'exécution, avec l'utilisation de Clang. Au moment où j'écris ces lignes (début 2018), Clang semble toujours donner de moins bons résultats pendant la compilation sur un système dominé par GCC. Quant à la taille des fichiers exécutables et aux temps d'exécution - lors de tâches en arrière plan, le cas échéant - l'on peut sans doute dire qu'il n'y a pas de différences importantes dans la taille des fichiers, alors que des programmes en C pur sans invocations de bibliothèques sont considérablement avantagés, par rapport aux temps d'exécution, avec l'utilisation de Clang.
Ligne 69: Ligne 69:
 For the time being, the fact that this compiler suite is available within Ubuntu, but also under Mac OS, several BSD distributions, Android, and - albeit very recently - Windows, may already make Clang a useful alternative if developing cross-platform applications using pure C, C++ or Objective C. Other arguments have been made concerning the Clang compiler’s more open structure, which would make it easier to modify and adapt to other programming languages. This argument, though not directly applicable to end users, may weigh on making the Clang/LLVM a preferred compiler base when newer programming languages appear moving forward.** For the time being, the fact that this compiler suite is available within Ubuntu, but also under Mac OS, several BSD distributions, Android, and - albeit very recently - Windows, may already make Clang a useful alternative if developing cross-platform applications using pure C, C++ or Objective C. Other arguments have been made concerning the Clang compiler’s more open structure, which would make it easier to modify and adapt to other programming languages. This argument, though not directly applicable to end users, may weigh on making the Clang/LLVM a preferred compiler base when newer programming languages appear moving forward.**
  
-Ainsi, les résultats sont un peu ambigus et pas encore conformes aux objectifs du projet Clang (cf https://clang.llvm.org/). Toutefois, force est de constater que ces essais ont été effectués avec le noyau standard et les bibliothèques fournies dans Ubuntu, qui ont tous été compilés avec GCC. Si, un jour le noyau et les bibliothèques système dans la distribution Ubuntu sont tous compilés avec Clang, il se peut très bien que les temps de compilation soient réduits sous Clang, lui conférant un avantage évident par rapport à GCC. Des progrès ont été fait en compilant le noyau Linux avec Clang, spécialement conçu pour être utiliser dans des systèmes Android. On s'est déjà intéressé à la production d'une version de Debian avec Clang. Ainsi, le scénario dans lequel GCC serait remplacé par Clang est tout à fait possible, peut-être à moyen terme.+Ainsi, les résultats sont un peu ambigus et pas encore conformes aux objectifs du projet Clang (cfhttps://clang.llvm.org/). Toutefois, force est de constater que ces essais ont été effectués avec le noyau standard et les bibliothèques fournies dans Ubuntu, qui ont tous été compilés avec GCC. Si, un jour le noyau et les bibliothèques système dans la distribution Ubuntu sont tous compilés avec Clang, il se peut très bien que les temps de compilation soient réduits sous Clang, lui conférant un avantage évident par rapport à GCC. Des progrès ont été faits en compilant le noyau Linux avec Clang, spécialement conçu pour être utilisé dans des systèmes Android. On s'est déjà intéressé à la production d'une version de Debian avec Clang. Ainsi, le scénario dans lequel GCC serait remplacé par Clang est tout à fait possible, peut-être à moyen terme.
  
 Pour l'heure, le fait que cette suite de compilateur soit disponible dans Ubuntu, mais aussi sous Mac OS, plusieurs distributions BSD, Android, et - quoique très récemment - Windows, peut déjà faire de Clang une alternative utile dans le développement d'applications multi-plateforme en utilisant C pur, C++ ou Objective C. D'autres arguments sont avancés au sujet de la structure plus ouverte du compilateur Clang ; cela rendrait plus facile sa modification et son adaptation à d'autres langages de programmation. Cet argument, bien que n'affectant pas directement les utilisateurs finaux peut contribuer à faire de Clang/LLVM une base de compilateur de choix quand de nouveaux langages de programmation apparaissent et progressent. Pour l'heure, le fait que cette suite de compilateur soit disponible dans Ubuntu, mais aussi sous Mac OS, plusieurs distributions BSD, Android, et - quoique très récemment - Windows, peut déjà faire de Clang une alternative utile dans le développement d'applications multi-plateforme en utilisant C pur, C++ ou Objective C. D'autres arguments sont avancés au sujet de la structure plus ouverte du compilateur Clang ; cela rendrait plus facile sa modification et son adaptation à d'autres langages de programmation. Cet argument, bien que n'affectant pas directement les utilisateurs finaux peut contribuer à faire de Clang/LLVM une base de compilateur de choix quand de nouveaux langages de programmation apparaissent et progressent.
issue131/mon_opinion.1523339848.txt.gz · Dernière modification : 2018/04/10 07:57 de d52fr