La mémoire algorithme d'allocation convient le mieux pour la performance et la critique des applications c++?

Je pose cette question pour déterminer l'allocation de la mémoire de l'algorithme donne de meilleurs résultats avec les performances des applications critiques, comme les moteurs de jeu, ou des applications embarquées. Les résultats sont en fait dépend pourcentage de mémoire fragmentée et le temps-le déterminisme de la demande de mémoire.

Il existe plusieurs algorithmes dans les livres de texte (par exemple, Copain d'allocation de mémoire), mais il y a aussi d'autres comme TLSF. Donc, concernant l'allocation de la mémoire des algorithmes disponibles, celui qui est le plus rapide et cause moins de fragmentation. BTW, les éboueurs devraient pas être inclus.

Veuillez également noter que cette question n'est pas sur le profilage, elle vise simplement à trouver le meilleur algorithme pour un programme donné.

  • Existe-il d'autres exigences, comme combien de temps vous allez vous accrocher à des éléments, à quelle fréquence vous allouer/libérer/et la taille des allocations? Je ne sais pas assez sur des algorithmes différents, mais je peux imaginer des scénarios où ceux-ci pourraient être décisifs dans le choix entre l'utilisation d'une méthode de répartition vs un autre en raison de la taille de la comptabilité des structures, le temps que les coûts w/ allocation/désallocation de l'algorithme, etc.
  • Morgan-Graham minimum de temps d'exécution et de fragmentation de la mémoire sont les besoins les plus importants. D'autres, à ce stade, peut être mis au rebut.
  • Ne pas faire de cette question une réponse parce que c'est un cliché, mais: utilisez la valeur par défaut. Si (si) de la performance devient un problème, de profil. Seulement quand cela s'avère un goulot d'étranglement dans l'allocation de la mémoire serait un bricoleur avec l'allocation de la mémoire.
  • Une chose à garder à l'esprit est que, même si les jeux vidéo ont une interactivité en temps réel, cela ne signifie pas qu'ils ont les mêmes besoins que les applications en temps réel (par l'ensemble de l'industrie de la définition). Par exemple, dans un programme temps réel, il peut être acceptable pour permettre une hausse de la moyenne des temps d'exécution si une garantie peut être faite que la répartition complète en vertu d'un nombre maximal de cycles de processeur. Jeu vidéo optimisations ont tendance à faire soit en réduisant ou en évitant l'allocation des tout-ensemble, ou simplement en réduisant la moyenne de l'exécution, plutôt que d'essayer de donner un cycle de comptage de garantie.
  • La raison pour laquelle je mentionne cela, c'est que certaines personnes sont en mentionnant "temps réel" dans leurs réponses. Je n'ai pas vraiment voir "en temps réel" dans votre question...
  • Il fut un temps où la question posée à propos de la performance en temps réel et de la fragmentation.