L'ajout de l'-rdynamic linker option de gcc/g++ impact sur les performances?
Je veux obtenir la trace de la pile lorsque l'application se bloque. Je comprends que l'-rdynamic option permet d'obtenir la trace de la pile complète avec les noms de fonction. Mais je suis intéressé si il n'y aura aucun impact sur les performances de mon application.
Vous devez vous connecter pour publier un commentaire.
Oui, il est, mais il est très spécifique et généralement pas une cause de préoccupation.
L'-rdynamic option indique à l'éditeur de liens pour ajouter des symboles pour les tables de symboles qui ne sont normalement pas nécessaires au moment de l'exécution. Cela signifie qu'il existe plus, voire beaucoup plus, les symboles que l'éditeur de liens dynamique des besoins de mauvaises herbes à travers au moment de l'exécution pour la résolution de symboles.
Plus précisément, depuis la table des symboles de recherches dans GNU systèmes sont mis en œuvre en utilisant une table de hachage, ayant plus de symboles augmente les chances qu'il y aurait des collisions de hachage. Depuis tous les symols qui entrent en collision dans la table de hachage de s'asseoir dans une liste, au moment de l'exécution de l'éditeur de liens doit parcourir la liste et les comparer, à l'aide de memcmp, chaque nom de symbole. Avoir plus de symboles entrent en collision dans la table de hachage sens d'avoir de longues listes et donc il va prendre plus de temps pour résoudre chaque symbole dynamique.
Cette situation est un peu plus mauvais pour le C++ puis C, avec la multitude de façon identique préfixe aux noms de symbole en raison de noms de classe.
Dans la pratique, cela n'affecte que la première fois qu'un symbole est utilisé et donc, sauf si votre application est très grand et contient beaucoup de symboles, il ne sera pas sentir.
Dans les rares cas où votre application est que les grandes figures, comme les c' peut être utilisé pour surmonter la surcharge.