Aide MetaEditor

Profilage du code

Profilage du code

Profilage signifie la récolte de paramètres du programme pendant son exécution. Pendant un profilage, l'heure d'exécution et le nombre d'appels aux fonctions individuelles et aux lignes de code du programme sont mesurés. Avec cet outil, le développeut peut trouver et optimiser les sections de code les plus lentes.

Le profilage peut être effectué sur un graphique normal de la plateforme de trading ou en utilisant les données historiques dans le Strategy Tester. Dans le premier cas, un programme est lancé sur un graphique qui est mis à jour en temps réel. Vous pouvez vérifier le comportement du programme en conditions réelles. Dans le deuxième cas, le programme est lancé dans le Strategy Tester en mode visuel. L'avantage de cette méthode est que vous n'avez pas besoin d'attendre les données réelles du serveur de trading ou l'arrivée de certaines conditions de trading.

De nombreux programmes, notamment les indicateurs, n'effectuent des calculs qu'au moment de l'arrivée d'un nouveau tick (OnTick, OnCalculate). Pour évaluer les performances, vous devez donc attendre de recevoir de nouveaux ticks en temps réel. Lors du profilage sur les données historiques, vous pouvez fournir immédiatement la charge désirée et tester les performances du programme même pendant le week-end alors que les marchés sont fermés.

Lancer le profilage

Ouvrez le code source d'un programme (MQ4 ou MQ5). Dans le menu Debug ou dans la barre d'outils Standard, apuyez sur "Lancer le profilage sur les données réelles Lancer le profilage sur les données réelles" ou "Lancer le profilage sur les données historiques Lancer le profilage sur les données historiques".

Après cela, une version spéciale du programme pour le profilage sera compilée automatiquement. Suivant le type de profilage sélectionné, le programme sera lancé sur un graphique normal dans la plateforme de trading ou dans le Strategy Tester (en mode visuel).

Lancer le profilage sur un graphique dans la plateforme de trading

Par défaut, une application est lancé sur EURUSD H1. Pour le lancer sur un autre symbole ou une autre période, spécifiez-les dans l'onglet Debug des paramètres de MetaEditor.

Après le lancement, utilisez l'application pendant quelque temps pour essayer ses fonctionnalités au maximum. Ceci est nécessaire pour que le profileur mesure le temps d'exécution de toutes les fonctions et des lignes du programme.

Stoppez ensuite le profilage : supprimez le programme du graphique ou cliquez sur Arrêter le Profilage Arrêter le Profilage du menu Debug ou de la barre d'outils Standard.

Pour des résultats plus précis de profilage, il est recommandé d'enlever manuellement le programme du graphique au lieu d'utiliser la commande Arrêter le Profilage Arrêter le Profilage.

Voir les résultats du profilage

Une fois que le profilage est fini, ses résultats sont affichés dans l'onglet Profiler de la fenêtre Boîte à Outils. Les résultats peuvent être vus de 2 façons : par appels ou par lignes. Utilisez le menu contextuel pour basculer entre elles.

Mode Fonctions par Appels

Résultats de profilage

Dans ce mode, les résultats de profilage sont présentés par fonctions :

  • Fonction – nom de la fonction ou de la méthode de classe.
  • Ligne – ligne à laquelle la fonction est appelée. Si la fonction est appelée de plusieurs endroits dans le programme, son icone ressemble à Etendre. En cliquant dessus, les informations de chaque appel sont affichées.
  • Compte – nombre d'appels à la fonction pendant l'exécution du programme.
  • Temps – temps d'exécution de la fonction en microsecondes, ainsi qu'en % relatif au temps d'exécution de toutes les fonctions. Le temps d'exécution de la fonction est la somme de l'exécution de toutes les fonctions appelées dedans.
  • Graphe – graphe par temps d'exécution des fonctions.

Les icones vous permettent de spécifier le type des fonctions :

  • Fonction personnalisée – fonction personnalisée.
  • Fonction système – fonction système.
  • Fonction de gestion d'évènement – fonction de gestion d'évènement (On*).
  • Méthode de classe – méthode de classe.

En plus de ces types de fonctions, le profiler affiche :

  • Fonction système @global_initializations – données sur l'initialisation de toutes les variables globales.
  • Fonction système @global_deinitializations – données sur la déinitialisation de toutes les variables globales.

Pour voir une fonction dans un fichier, double-cliquez dessus.

Le profiler n'affiche pas toutes les fonctions, mais seulement celles appelées pendant l'exécution du programme.

Mode Fonctions par Lignes

Résultats de profilage

Dans ce mode, les données du temps d'exécution du programme sont représentées par des lignes. Les lignes sont groupées par fonctions du programme.

  • Fonction – nom de la fonction.
  • Ligne – numéro de la ligne pour laquelle les données sont affichées. Pour voir les données du temps d'exécution de chaque fonction, cliquez sur Etendre.
  • Compte – nombre de fois où le code de la ligne spécifiée a été exécuté.
  • Temps – temps d'exécution du code à la ligne spécifiée en microsecondes et en %. Les pourcentages pour chaque ligne sont affichés relativement au temps d'exécution de la fonction. Les pourcentages pour les fonctions sont affichés relativement au temps d'exécution du programme entier.
  • Graphe – graphe par temps d'exécution.

Pour voir une ligne dans un fichier, double-cliquez dessus.

Menu contextuel

Les commandes suivantes sont disponibles dans le menu contextuel :

  • Ouvrir – se rend à la ligne ou dans une fonction située dans le fichier du code source. La même action peut être effectuée en double cliquant ou appuyant sur Entrée.
  • Tout Développer – développe toutes les fonctions réduites.
  • Tout Réduire – réduit toutes les fonctions développées.
  • Fonctions par Lignes – voir les résultats du profilage par lignes.
  • Fonctions par Appels – voir les résultats de profilage par appels.
  • Exporter – exporte les résultats de profilage en Open XML (MS Office Excel), HTML (Internet Explorer) ou CSV (fichier texte).
  • Arrangement Automatique – active/désactive le dimensionnement automatique des champs. La même action est effectuée en appuyant sur A.
  • Grille – affiche/cache une grille pour séparer les champs. La même action est effectuée en appuyant sur G.