Je suis en train de jouer avec certains algorithmes de mise en cache, ce qui est un peu difficile. Fondamentalement, il doit allouer beaucoup de petits objets (tableaux doubles, 1 à 256 éléments), avec des objets accessibles via la valeur mappée, map[key] = array
. Le temps de mise en réseau initialisé peut être assez important, généralement supérieur à 10 000 cycles cpu.stratégie pour allouer/libérer beaucoup de petits objets
Par lots, je veux dire environ gigaoctet au total. les objets peuvent devoir être sautés/poussés au besoin, généralement dans des endroits aléatoires, un objet à la fois. La durée de vie d'un objet est généralement longue, minutes ou plus, cependant, l'objet peut être soumis à allocation/désallocation plusieurs fois pendant la durée du programme.
Quelle serait une bonne stratégie pour éviter la fragmentation de la mémoire, tout en conservant une allocation raisonnable de la vitesse de désallocation? J'utilise C++, donc je peux utiliser new et malloc. Merci.
Je sais qu'il ya des questions similaires sur le site Web, Efficiently allocating many short-lived small objects, sont quelque peu différentes, la sécurité des threads n'est pas un problème immédiat pour moi.
ma plate-forme de développement est Intel Xeon, système d'exploitation Linux. Idéalement, je voudrais aussi travailler sur PPC Linux, mais ce n'est pas le plus important pour moi.
Quelle est la plate-forme? Je veux dire, OS, architecture de CPU, compilateur, etc. Ceux-ci peuvent affecter la réponse de manière substantielle. –