Unity Performance erhöhen?
Hey,
stehe gerade vor einem Problem. Und zwar Arbeitet mein Projekt zu langsam, CPU und GPU dümpeln in relativ niedrigen Bereichen rum, und Unity berechnet einfach zu langsam.
Erstmal um was es geht, ich durchlaufe in einer relativ großen Schleife (1000+ * 26) eine Liste, überprüfe und instanziere dann je nach dem Objecte.
Das Ganze aus der Updatemethode aus einem Script heraus, das auf einem Empty Gameobject liegt.
Das Script schaut so aus:
Das ganze sollte Conways Spiel des Lebens werden. Nur in 3D.
Währe dankbar wenn ihr mir sagen könntet, wie ich das ganze Flüssig machen könnte, und die CPU voll ausnützen könnte.
1 Antwort
Hi,
bei solchen Dingen lohnt es sich natürlich, wenn du die Berechnungen der Schleife nicht nur in einem Thread sondern mehreren laufen lässt.
Hier könntest Du Dir das Job-System von Unity anschauen, um Deinen Code auf mehreren Threads laufen zu lassen: https://docs.unity3d.com/Manual/JobSystem.html
In Kombination mit dem Burst Compiler kannst du prinzipiell sehr viel Performance rausholen: https://docs.unity3d.com/Packages/com.unity.burst@0.2-preview.20/manual/index.html
Aber: dieser Umbau ist nicht trivial, da du generell erstmal das Job-System verstehen musst und dann natürlich deine eigenen Daten. Diese müssen so aufbereitet werden, dass deren Bearbeitung parallelisierbar ist. Das kann ich dir auch hier nicht direkt beschreiben, da es mehr benötigt als nur ein kleiner Ausschnitt vom Code.
Das Problem ist übrigens auch kein „generelles Unity“ Problem. Damit hat jeder zu kämpfen, der viele Daten verarbeiten möchte. :)
Viel Erfolg!
Wenn du maximale Performance rausholen willst, dann Job System.
Wie gut hier Parallel.ForEach ist und Dir helfen kann, weiß ich leider nicht. Aufgrund des Job-Systems hatte ich noch nie den Bedarf in Unity Parallel.ForEach zu benutzen. :)
und freut mich, dass unser Kanal Dir helfen konnte mit Unity und Blender anzufangen. :)
Ja isses nicht. :-D Dank dir/euch hab ich erst mit Unity und Blender Angefangen.
Kann ich auch ne ParralelFor benutzen? Oder muss es zwingend das Unity Job System sein?