Les Performances des Structures vs Classes
Je me demande si il y a des comparaisons de performances de classes et de style C struct en C++ avec g++ -O3 option. Est-il un indice de référence ou de comparaison à ce sujet. J'ai toujours pensé que les classes C++ est plus lourde et peut-être plus lente ainsi que de leurs structures (moment de la compilation n'est pas très important pour moi, le temps d'exécution est plus important). Je vais mettre en œuvre un B-arbre, dois-je la mettre en œuvre avec des classes ou à des structures pour des raisons de performance.
- Qui exact de votre jumeaux aimez-vous le plus?
- En fait, je n'ai jamais utilisé les fonctionnalités avancées du C++ structs, j'ai toujours utilisé comme un conteneur pour les données publiques comme un C struct. Quand j'ai besoin de fonctionnalités complexes comme l'héritage, le polymorphisme, etc, je préfère utiliser des classes. Donc ce n'est pas l'amour et de la haine
Vous devez vous connecter pour publier un commentaire.
De l'exécution de niveau il n'y a pas de différence entre les structures et les classes en C++ à tous les.
Afin de ne pas faire de différence de performances si vous utilisez
struct A
ouclass A
dans votre code.Autre chose, est l'utilisation de certaines fonctionnalités -- comme, constructeurs, destructeurs et des fonctions virtuelles, -- pourrait avoir des pénalités (mais si vous les utilisez, vous aurez probablement besoin d'eux de toute façon). Mais vous pouvez le faire avec un égal succès les utiliser à la fois à l'intérieur de votre classe ou structure.
Dans ce document vous pouvez lire sur d'autres liées à la performance des subtilités du C++.
En C++,
struct
est sucre syntaxique pour les classes dont les membres sont publics par défaut.struct
est la syntaxe qui est rétro-compatible, C etclass
est plus de la programmation orientée objet-comme du sucre syntaxique pour les classes dont les membres sont privés par défaut...struct
etclass
sont équivalentes (sauf pour les accès par défaut)"struct
etprivate
semble plutôt inutile.Mon opinion honnête...ne vous inquiétez pas au sujet de la performance jusqu'à ce qu'il se révèle être un problème, alors le profil de votre code. L'optimisation prématurée est la racine de tous les maux. Mais, comme d'autres l'ont dit, il n'y a pas de différence entre une struct et class en C++ lors de l'exécution.
Concentrer sur la création d'une structure de données efficace et efficiente de la logique de manipuler la structure des données. Les classes C++ ne sont pas intrinsèquement plus lent que le C-style structs, alors ne vous laissez pas limiter votre conception.
Autant que je sache, à partir d'un point de vue des performances, ils sont l'équivalent en C++.
Leur différence est synctatic de sucre comme les membres de la structure sont publics par défaut, par exemple.
my2c
Viens de faire une expérience, les gens!
Voici le code pour l'expérience que j'ai conçu:
Sur mon ordinateur, struct a pris 1286 tops d'horloge, et la classe a pris 1450 tops d'horloge. Pour répondre à votre question, struct est légèrement plus rapide. Toutefois, cela ne devrait pas d'importance, parce que les ordinateurs sont si vite ces jours-ci.
bien en fait, les structures peuvent être plus efficaces que les classes a la fois en temps et en mémoire (e.g des tableaux de structures vs les tableaux d'objets),
voir cet article pour plus de détails.