Aber egal hab keine zeit zum spielen.
Um auf das Eingangsproblem zurückzukommen...
ich sehe hier eine relativ einfache Möglichkeit zur Parallelisierung. Du solltest einen Kern(=Thread) den Frame rendern lassen und einen anderen Kern bereits den nächsten.
Wenn Du so die Arbeit auf 4 Kerne verteilst, hat jeder Kern die vierfache Zeit für seine Arbeit. Du musst natürlich die Soundausgabe soweit verzögern, dass sie zeitgleich mit der Anzeige kommt.
Das ganze erfordert natürlich einen ziemlichen Verwaltungsaufwand.
Mit anderen Worten:
Die Kerne werkeln gleichzeitig an vier aufeinanderfolgenden Frames. Sie stellen ihr Ergebnis in eine kurze Warteschlange, die von der Grafikausgabe aufgenommen und auf den Bildschirm gebracht wird. Kern1 bearbeitet also die Frames 1,5,9..., Kern2 2,6,10..., Kern 3 3,7,11... und Kern 4 4,8,12...