L'outil le plus précieux pour la recherche des goulots d'étranglement de performance est mesure. Vous devez déterminer quel code a le problème et puis mesurer il pour les échecs de cache, si cela s'avère en effet être le problème. En ce qui concerne les idées générales, vous aurez besoin de réduire le taux d'échec. Ainsi, lorsque vous enregistrez des données dans la mémoire, vous devez travailler autant que possible dessus avant de les quitter, plutôt que de diffuser des données. Comparer à titre d'exemple,
for i in data:
f(i)
for i in data:
g(i)
for i in data:
h(i)
qui traverse la liste trois fois. Il peut être possible d'écrire ceci comme suit:
for i in data:
h(g(f(i)))
abaisser le cheminement à un seul instant - ce qui entraîne généralement moins de ratés.
Une autre astuce digne de ce nom est de penser à la structure de données. Les modèles d'accès d'un arbre binaire sont très différents de ceux d'une table de hachage. Mais établissez d'abord la mesure pour être sûr que vous avez réussi à rattraper le retard - et que ce sont les échecs qui sont votre problème. Enfin, même avec des taux d'échecs faibles, vous pouvez envisager de réduire la bande passante de la mémoire en général. Si vous déplacez beaucoup et beaucoup de données, il a tendance à être lent - puisque les vitesses de mémoire se développent à un taux beaucoup plus faible par rapport au nombre de transistors.
Je ne pense pas que ce soit une mauvaise question, mais c'est une question vaste, donc les réponses que vous obtiendrez sont tout aussi vagues. –