Je développe une simulation basée sur OpenGL en C++. J'optimise mon code maintenant et je vois dans tout le code l'utilisation fréquente de std: list et std: vector. Quoi de plus performant: continuer à utiliser des structures de données stl C++ ou une liste chaînée avec pointeur? L'opération principale qui implique std :: list et std :: vector ouvre un itérateur et parcourt tous les éléments des structures de données et applique un traitementCollections stl C++ ou listes chaînées
Répondre
Que diriez-vous des conteneurs stl de pointeurs?
Il est hautement improbable que vous soyez en mesure de développer des structures plus performantes que le modèle intégré. Le seul point négatif est que les conteneurs contiennent effectivement des copies d'objets stockés dans ces conteneurs. Si vous vous inquiétez de cette surcharge de mémoire (plusieurs structures hébergeant plusieurs copies des mêmes objets, rompant la cohérence à travers la table), vous devriez penser à utiliser les structures stl de pointeurs pour ce dont vous avez besoin. Algorithmiquement, la structure dont vous avez besoin est implémentée dans le fichier stl, vous devez donc l'utiliser. Il n'est pas nécessaire de réimplémenter la même structure.
Utilisez les structures de données STL C++, mais utilisez-les efficacement. Si vous utilisez std :: liste et std :: vector, regardez des fonctions telles que trouver, for_each, accumuler, etc. Voici une bonne lecture: http://www.cplusplus.com/reference/
Lisez les sections sur l'algorithme, numérique et fonctionnelle . En outre, je recommande fortement STL de Scott Meyers.
- 1. Listes chaînées C#
- 2. Listes chaînées simples dans C
- 3. C: listes chaînées de confusion
- 4. Comparaison des collections STL C++ et des collections C#?
- 5. Linq to sql - Listes chaînées
- 6. Intersection de deux listes chaînées
- 7. Besoin d'aide avec les listes chaînées;
- 8. Allocation de mémoire C++ et implémentation de listes chaînées
- 9. OOP design et Listes et collections (C#)
- 10. et question de référence (listes chaînées)
- 11. Liste chaînée et exemples de listes doublement chaînées
- 12. Attacher des méthodes chaînées à des collections d'éléments en JavaScript
- 13. Mutexes C++ et listes STL à travers les sous-classes
- 14. Lecture polynomiale de base en utilisant des listes chaînées
- 15. Ajout de polynômes (listes chaînées) ...... Aide sur les bogues
- 16. est-ce que systemverilog supporte les listes chaînées?
- 17. Listes chaînées, polynômes, opérateurs surchargés << and >> en C++
- 18. Lockfree collections standard et tutoriel ou articles
- 19. C++ Différence d'ensemble STL
- 20. Listes non modifiables en C#
- 21. Problème d'objet VB.NET avec collections, tableaux et listes
- 22. C# - Collections et coulée
- 23. Affichage d'une base de données sur les collections, Listes ORM
- 24. C# automapper collections imbriquées
- 25. C# Génériques et collections
- 26. Fusionner deux listes à temps constant en Java
- 27. Structure de données de sérialisation C# avec des objets dans plusieurs listes/collections
- 28. Un ou plusieurs formulaires pour les boîtes de sélection chaînées?
- 29. Résolution de problèmes en C++ avec STL
- 30. Déclaration des collections en C#
Si vous n'avez pas encore défini votre code, vous posez la question prématurément. Vous devriez savoir avant d'arriver ici si std :: list ou std :: vector prennent un temps disproportionné. –
Je suppose que si vous profilez votre code, vous verrez que votre utilisation de STL n'est pas la chose la plus lente. Ne vous embêtez pas à poser cette question jusqu'à ce que ce soit la chose la plus lente ... en mode de libération entièrement optimisé. –
Juste pour info, "performant" est le mot que j'entends le plus souvent pour ce que vous appelez "performatic". – sblom