Verhalten eines Algorithmus in Abhängigkeit von den berechneten Objekten



  • Ich habe eine nette kleine Partikel-Engine geschrieben [und wehe das wird deswegen zu Spiele- und Grafikprogrammierung verschoben) die bei 1 Partikel nicht schneller ist als bei 300 Partikeln aber bei 400 Partikeln auf einmal nur noch halb so schnell ist.

    Woran kann das liegen? Evt. daran, dass nachher (mit steigender Partikelzahl) auf einmal die Variablen nicht mehr alle im Prozessorregister gespeichert werden können und dann auf dem (langsameren) Stack landen?



  • also wenn Dein prozessor 300 Register hat, dann ja 😉
    Hatter aber nicht.
    Kann aber sein, dass der Cache voll ist und dann in den Hauptspeicher umgelagert wird..
    musst mal ausrechnen, wie groß deine Datenstruktur ist. Wenn des bei 400 Partikeln mehr ist, als dein cache, dann ist das schonmal ein Hinweis, dass des so sein könnte...



  • Kann man so nicht beantworten, ohne mehr über die Datenstrukturen und Eckalgorithmen zu wissen.

    Hat auf jeden Fall nix mit Registern zu tun. Auch nicht mit dem CPU-Cache, weil der (MULTITASKING!) sowieso ständig umgeschaufelt wird.




Anmelden zum Antworten