Mesure de sortie de fonction avec __gnu_mcount_nc
Comprendre le problème
Le profilage des performances sur les plateformes embarquées peut être difficile, surtout lorsqu'une implémentation de la fonction __gnu_mcount_nc n'est pas disponible. Cette fonction est utilisée pour capturer l'heure d'entrée des fonctions lorsque l'indicateur -pg est activé lors de la compilation. Cependant, il n'enregistre pas les temps de sortie, ce qui rend difficile la détermination du temps passé dans une fonction.
Approche alternative
Les outils de profilage traditionnels utilisés par les compilateurs ne comptez pas sur __gnu_mcount_nc pour l'entrée ou la sortie de la fonction de synchronisation. Au lieu de cela, ils utilisent une technique appelée stack sampling. Cette approche capture des instantanés de la pile d'appels à intervalles réguliers et attribue une fraction du temps d'exécution total à chaque fonction en fonction de la fréquence de son apparition dans les piles d'appels échantillonnées.
L'échantillonnage de pile présente plusieurs avantages par rapport à une approche qui s'appuie uniquement sur __gnu_mcount_nc :
Mise en œuvre de l'échantillonnage de pile
Pour mettre en œuvre l'échantillonnage de pile, les étapes suivantes peuvent être prises :
Informations supplémentaires
Au-delà de la capture des temps de sortie des fonctions, l'échantillonnage de pile fournit également des informations précieuses sur le comportement global du programme :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!