Hallo,
ich habe folgende Klasse geschrieben.
Zum Verständnis erkläre ich kurz, was hier passieren soll:
Die Klasse ist Teil eines Programms, das Befehle an den Flugsimulator von Microsoft sendet. Hierbei stehen mehrere Offsets zur Verfügung, in denen zum Beispiel die Flughöhe oder die Stellung von irgendwelchen Klappen festgehalten werden.
Diese Offsets sollen manipuliert werden. Eine Art dabei ist das addieren eines festgelegten Wertes zu dem, der bereits im Offset ist. Dabei wird weiter unterschieden zwischen einem einmaligen Addieren, mehrmaligem Addieren und mehrmaligem Addieren mit Beschleunigung.
Die Befehle selbst werden von einem Hardwaretaster ausgelöst, der über einen IO-Warrior (Platine, um unter anderem Schalter mit dem PC zu verbinden) gelesen wird.
Die Verbindungen zum FS und zum IO-Warrior bestehen schon.
Der Ablauf sieht also so aus:
Der IO-Warrior sagt: Taste 44 wurde gerade gedrückt.
Mein Programm sucht Taste 44 und führt alle Actions aus, die diese Taste beim Drücken ausführen soll.
Bei der addAction (Code unten) wird wie oben beschrieben unterschieden.
Nun zur eigentlichen Frage:
Ist es möglich, dass diese 3 IF Abfragen bei der execute() Methode das Programm merklich ausbremsen, gegenüber einer Lösung, in der ich 3 weitere Klassen schreibe, die die 3 besagten Fälle abdecken? (Add, Add mit Wiederholung, Add mit Wiederholung und Beschleunigung). Beim Starten des Programms sollen alle Schalterdefinitionen eingelesen und die entsprechenden Actions angelegt werden. Bei jedem Druck eines solchen "add" Tasters würden also die 3 Abfragen ausgeführt, was bei 3 eigenständigen Klassen nicht der Fall wäre.
Ich bin noch nicht so der Java Crack und hab darum mit der Effizienz noch gar keine Erfahrung
ich habe folgende Klasse geschrieben.
Zum Verständnis erkläre ich kurz, was hier passieren soll:
Die Klasse ist Teil eines Programms, das Befehle an den Flugsimulator von Microsoft sendet. Hierbei stehen mehrere Offsets zur Verfügung, in denen zum Beispiel die Flughöhe oder die Stellung von irgendwelchen Klappen festgehalten werden.
Diese Offsets sollen manipuliert werden. Eine Art dabei ist das addieren eines festgelegten Wertes zu dem, der bereits im Offset ist. Dabei wird weiter unterschieden zwischen einem einmaligen Addieren, mehrmaligem Addieren und mehrmaligem Addieren mit Beschleunigung.
Die Befehle selbst werden von einem Hardwaretaster ausgelöst, der über einen IO-Warrior (Platine, um unter anderem Schalter mit dem PC zu verbinden) gelesen wird.
Die Verbindungen zum FS und zum IO-Warrior bestehen schon.
Der Ablauf sieht also so aus:
Der IO-Warrior sagt: Taste 44 wurde gerade gedrückt.
Mein Programm sucht Taste 44 und führt alle Actions aus, die diese Taste beim Drücken ausführen soll.
Bei der addAction (Code unten) wird wie oben beschrieben unterschieden.
Nun zur eigentlichen Frage:
Ist es möglich, dass diese 3 IF Abfragen bei der execute() Methode das Programm merklich ausbremsen, gegenüber einer Lösung, in der ich 3 weitere Klassen schreibe, die die 3 besagten Fälle abdecken? (Add, Add mit Wiederholung, Add mit Wiederholung und Beschleunigung). Beim Starten des Programms sollen alle Schalterdefinitionen eingelesen und die entsprechenden Actions angelegt werden. Bei jedem Druck eines solchen "add" Tasters würden also die 3 Abfragen ausgeführt, was bei 3 eigenständigen Klassen nicht der Fall wäre.
Ich bin noch nicht so der Java Crack und hab darum mit der Effizienz noch gar keine Erfahrung
Java:
public class addAction extends Action {
private boolean repeat = false;
private int repeatTime = 0;
private byte [] dataBuffer;
private int accel = 0;
public addAction(int offset, int byteCount, byte [] data)
{
super(offset, byteCount, data);
this.function = "add";
}
public addAction(int offset, int byteCount, byte [] data, int repeatTime)
{
super(offset, byteCount, data);
this.function = "add";
this.repeatTime = repeatTime;
this.repeat = true;
}
public addAction(int offset, int byteCount, byte [] data, int repeatTime, int accel)
{
super(offset, byteCount, data);
this.function = "add";
this.repeatTime = repeatTime;
this.accel = accel;
this.repeat = true;
}
public void execute()
{
if(repeat && repeatTime == 0) executeOnce();
if(repeat && repeatTime != 0) executeRep();
if(repeat && repeatTime != 0 && accel != 0) executeRepAcc();
}
private void executeOnce()
{
}
private void executeRep()
{
}
private void executeRepAcc()
{
}
public String toString()
{
StringBuffer sb = new StringBuffer();
sb.append(function+" Offset ["+offset+"]");
return sb.toString();
}
}