Auteur Sujet: Temps de compilation  (Lu 22342 fois)

fred

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
Temps de compilation
« le: mars 12, 2018, 11:49:10 pm »
Bonjour,

Je viens de recevoir mon 1er arduino (uno), et de lancer l'exemple de base "blink" (c'est pas original, d'accord). Je suis très surpris par le temps de compilation: 15 ou 20 s (pc core i5).
Y a-t-il un pb au niveau de la carte?
Si ce temps est normal, peut-on sauvegarder le programme compilé et le relancer plus tard, sans perte de temps?

Merci pour votre aide,

Cordialement

Fred
Cordialement,
fred

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : Temps de compilation
« Réponse #1 le: mars 13, 2018, 10:23:07 am »
Bonjour Fred et bienvenue sur Locoduino.

Ta question nous montre que tu ne sais pas bien ce qui se passe dans l’IDE.

En gros c’est un programme écrit en Java. Donc quand tu lances une compilation (bouton « vérifier » sans televersement), ton PC doit lancer la machine virtuelle Java et c’est ça qui est long. De plus il y a plein de fichiers de configuration à charger la première fois.

Si tu cliques sur « vérifier » un nouvelle fois, ça va être beaucoup plus rapide !!

Le reste n’a aucune importance, tu verras ...
... c’est le modélisme qui compte !

Amicalement
Cordialement,
Dominique

destroyedlolo

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Temps de compilation
« Réponse #2 le: mars 13, 2018, 10:51:20 am »
Salut,

Ce qui fait surtout ramer la première compilation, c'est surtout la méthodologie employée : dans une compilation classique, les librairies sont pré-compilées et seul ton code est compilé.

Avec l'IDE Arduino, les concepteurs ont décidé de rapatrier les sources de toutes les librairies dans un répertoire temporaire et de les compiler. Si t'en utilise beaucoup, ou si elles sont grosses (par exemple, celle dédié à l'ESP8266), ca peut vite prendre un temps non négligeable, mais comme le disait Dominique, ce n'est que la 1er fois.

Cependant, 15/20s n'est pas énorme : quand je met a jour Gcc sur mon BananaPI, il y en a  pour ... des heures !

A+

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Temps de compilation
« Réponse #3 le: mars 13, 2018, 04:16:20 pm »
Bonjour Fred et bienvenue sur Locoduino.

Une nième "vérification" de DCCpp_Uno.ino, notre programme fétiche dure moins de 5s sur un vieux tromblon d'il y a plus de 5 ans :
AMD-FX-6300 (6 cores 3,5Ghz, 8 Go de mémoire, W7)
Bien sur, sur Mac, c'est pas pareil !  ;)

Attention aux anti-virus, ils sont faits pour obliger à renouveler le matériel, en particulier quand on a des applications qui ouvrent de nombreux petits fichiers.
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : Temps de compilation
« Réponse #4 le: mars 13, 2018, 05:25:23 pm »
Oui c'est pas pareil  8)

2s40 sur mon Mac Mini (core i7 quadricœur 2,3GHz) de fin 2012

Je triche, j'ai pris la 1.9 beta qui lance les compilations en parallèle sur les cœurs.
5s moins de 4s (j'avais la totale affiché en messages de compilation) avec la 1.8.5

4s30 4s sur mon MacBook Air (core i7 bicœur 1,7GHz) de début 2014 avec la 1.8.2.
4s 3s30 avec la 1.9b

C'est vraiment pas pareil  ;D

Pour répondre à la question :

La compilation dépend des performances du PC ou de Mac, pas de la carte Arduino. Les performances sont conditionnées par les performances du CPU mais également du disque et de façon générale par la hiérarchie mémoire et de la quantité de RAM. C'est également conditionné par les applications qui tournent en concurrence sur le PC (ou Mac).

C'est vrai que 15 à 20s c'est long mais c'est la faute du PC.
« Modifié: mars 13, 2018, 06:11:48 pm par Jean-Luc »
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : Re : Temps de compilation
« Réponse #5 le: mars 13, 2018, 05:40:08 pm »
En gros c’est un programme écrit en Java. Donc quand tu lances une compilation (bouton « vérifier » sans televersement), ton PC doit lancer la machine virtuelle Java et c’est ça qui est long. De plus il y a plein de fichiers de configuration à charger la première fois.

Euh, non Dominique

Le compilateur, gcc, est écrit en C et est donc exécuté nativement sur la machine. Pas d'overhead de machine virtuelle, pas de fichiers de configuration à charger.
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : Temps de compilation
« Réponse #6 le: mars 13, 2018, 06:05:12 pm »
5s30 sur le Mac Mini sous Windows 7 virtualisé sous VirtualBox
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : Re : Re : Temps de compilation
« Réponse #7 le: mars 13, 2018, 06:53:11 pm »
Le compilateur, gcc, est écrit en C et est donc exécuté nativement sur la machine.

Merci Jean-Luc et destroyedlolo, j’ai appris quelque chose !

En tout cas, maintenant, tout le monde sait qu’il vaut mieux acheter un Mac grâce aux économies réalisées en construisant ses propres systèmes à base d’Arduino  ;) :D ;D

Cordialement,
Dominique

fred

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
Re : Temps de compilation
« Réponse #8 le: mars 13, 2018, 09:18:59 pm »
Merci de votre accueil et vos réponses.
Je comprends mieux maintenant.
C'est effectivement beaucoup plus rapide à la 2ème compilation.
Cordialement,
Fred
Cordialement,
fred

destroyedlolo

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Re : Re : Re : Temps de compilation
« Réponse #9 le: mars 14, 2018, 10:13:44 am »
En tout cas, maintenant, tout le monde sait qu’il vaut mieux acheter un Mac grâce aux économies réalisées en construisant ses propres systèmes à base d’Arduino  ;) :D ;D
Ou Linux :)
Je fais souvent mes compiles sur un vieux Céléron monocore d'au moins 7 ou 8 ans d'age, et même la compile de l'énorme WiFi pour l'ESP8266 prend quelques 10e de secondes.
Normal, la compile se fait sur ramdisk plutot que sur le disque.

C'est ce qui est bien avec l'IDE arduino par rapport à d'autres solutions : on utilise l'environnement qu'on veut, on n'est pas forcé d'utiliser des windauseries  ;D ;D