Hallo,
ich versuche gerade die Stelle mit der größten Rechenlast in meinem Code zu optimieren. Sie wird extrem oft aufgerufen da sie am Ende mehrerer Schleifen steht.
Im Grunde wird nur ein Wert ausgewertet, von 1 bis 20. Und in jedem einzelnen Fall dann ca 2-4 Rechenoperationen ausgeführt.
Zuerst hatte ich es als 20 x IF Abfrage gelöst, dachte mir dann jedoch das das nicht Zielführend sein kann, 20x IF Abfrage Funktion plus ca 3 Folgeoperationen,
macht 23 Operationen pro durchlauf.
Zweiter Ansatz war es als CASE SWITCH umzusetzen, ich dachte das bringt performance, aber offenbar ist das intern nahezu genauso Rechenintensiv,
die Zeitersparnis liegt bei vielleicht 20%.
Jetzt suche ich irgend einen Weg der ähnlich performant wie ein Fiktives JUMP TO währe, so wie früher in QBASIC. Das also nur EINE Operation ausgeführt
wird die dann direkt an die eine der zwanzig Stellen springt an denen es dann weiter geht. Ende. Würde die Rechenlast von ca 23 auf 4 reduzieren, müsste
also defakto dann etwa 5x so schnell gehen.
Hat jemand einen Ansatz oder Tipps wie ich das Umsetzen könnte?
Mir fällt als Notlösung gerade nur ein das in Mehrere IF´s zu schachteln, also erst Wert ><10, dann jeweils wieder auf zwei 5er Werftenbereiche aufgabeln,
usw, so käme ich mit ca 1/4 der IF Abfragen aus. Müsste aber doch sicher geschickter umsetzbar sein?
ich versuche gerade die Stelle mit der größten Rechenlast in meinem Code zu optimieren. Sie wird extrem oft aufgerufen da sie am Ende mehrerer Schleifen steht.
Im Grunde wird nur ein Wert ausgewertet, von 1 bis 20. Und in jedem einzelnen Fall dann ca 2-4 Rechenoperationen ausgeführt.
Zuerst hatte ich es als 20 x IF Abfrage gelöst, dachte mir dann jedoch das das nicht Zielführend sein kann, 20x IF Abfrage Funktion plus ca 3 Folgeoperationen,
macht 23 Operationen pro durchlauf.
Zweiter Ansatz war es als CASE SWITCH umzusetzen, ich dachte das bringt performance, aber offenbar ist das intern nahezu genauso Rechenintensiv,
die Zeitersparnis liegt bei vielleicht 20%.
Jetzt suche ich irgend einen Weg der ähnlich performant wie ein Fiktives JUMP TO währe, so wie früher in QBASIC. Das also nur EINE Operation ausgeführt
wird die dann direkt an die eine der zwanzig Stellen springt an denen es dann weiter geht. Ende. Würde die Rechenlast von ca 23 auf 4 reduzieren, müsste
also defakto dann etwa 5x so schnell gehen.
Hat jemand einen Ansatz oder Tipps wie ich das Umsetzen könnte?
Mir fällt als Notlösung gerade nur ein das in Mehrere IF´s zu schachteln, also erst Wert ><10, dann jeweils wieder auf zwei 5er Werftenbereiche aufgabeln,
usw, so käme ich mit ca 1/4 der IF Abfragen aus. Müsste aber doch sicher geschickter umsetzbar sein?
Just a bloggingFreak raysspieleschmiede.blogspot.de freakwave-games.blogspot.de