Bremsen 3 IF-Abfragen ein Programm?

Status
Nicht offen für weitere Antworten.

Snooky

Mitglied
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 :(

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();
	}

}
 
S

SlaterB

Gast
das dauert keine Zeit und gerade als Anfänger lohnt es auch nicht, darüber zu grübeln,
hättest du drei Klassen, könnte allein die Auswahl der Klasse an irgendeiner Stelle im Hintergrund viel länger dauern als die Auswahl einer Methode der eigenen Klasse
 

Snooky

Mitglied
In Ordnung, vielen Dank für die schnelle Antwort :)
Dann programmiere ich nun alles in einer Klasse.
Wobei das Argument der Auswahl der Klasse hier eigentlich nicht gilt, da ja alle Actions definiert und den entsprechenden Knöpfen zugeordnet werden (aus einem Excel File mit der Apache API), bevor sie aufgerufen werden.

Oder meintest du da etwas anderes?
 

Paddelpirat

Bekanntes Mitglied
Also am schnellsten müsste folgende Abfrage sein:

Java:
	public void execute() {
		if(repeat) {
			if(repeatTime == 0) executeOnce();
			else {
				executeRep();
				if(accel != 0) executeRepAcc();
			}
		}
	}

Aber, ob man den Unterschied bemerkt wage ich zu bezweifeln ;-)
 
S

SlaterB

Gast
> Oder meintest du da etwas anderes?

was genau in deinem Programm passiert, weiß ich natürlich nicht,
da müssen wir auch nicht in Details gehen, kann sein dass das if wirklich zusätzlich ist, aber z.B. 100x schneller, als überhaupt die Methode execute() aufzurufen, egal in welcher Klasse,
also völlig egal

wenn, dann kannst du dich darüber aufregen, dass du eine zusätzliche Indirektion hast, dass nicht execute() selber die Arbeit erledigt, sondern noch ne andere Methode aufruft,
aber es werden soviele Millionen Methoden pro Sekunde aufgerufen dass das auch egal ist,
und paar if spielen noch weniger ne Rolle
 

Snooky

Mitglied
Ok super, das ist schonmal viel wert :)
Um aufzuklären, warum ich überhaupt frage:
Zur Zeit benutzen wir bei uns an der Uni bei einem kleinen Flugsimulatorprojekt ein Programm, das in Delphi geschrieben ist.
Delphi kann ich gar nicht, habe aber so viel verstanden, dass alle Actions in einer Klasse namens ActionUnit zusammen gefasst sind. Je mehr Knöpfe (~110 momentan) und Actions (~200 momentan) man hat, umso mehr geht das Programm in die Knie.
Man muss die Priorität auf Echtzeit setzen, um Reaktionszeiten von unter 1 Sekunde zu realisieren.
Das soll mir bei meinem Projekt nicht passieren :)

Nochmal Danke für die Hilfe
 

Snooky

Mitglied
Hm, keine Ahnung. Das hat ein Softwareentwickler bei Siemens geschrieben.
Vielleicht liegts aber auch an der Schnitstelle zum FS, wobei die erfahrungsgemäß sauschnell ist. Dort kann man kleine Programme mittels lua-Script einfügen, die dann rasend schnell arbeiten.
Ich hatte bei dem Delphiprogramm auch eher den Eindruck, dass das Abarbeiten eines Repots vom IO-Warrior zu lange dauert.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M MergeSort - Threads in Anwendung bremsen alles! Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
ven000m Bitcoin Blockhöhe abfragen Java Basics - Anfänger-Themen 12
S If abfragen (+, - , /, *) Java Basics - Anfänger-Themen 13
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
Phash Websocket abfragen Java Basics - Anfänger-Themen 1
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
E schneller von der Datenbank abfragen Java Basics - Anfänger-Themen 15
M Checkbox abfragen und Radiobutton Group zurücksetzen Java Basics - Anfänger-Themen 1
L Datenpaare abfragen Java Basics - Anfänger-Themen 11
O ADT Graph nach größe Abfragen Java Basics - Anfänger-Themen 42
B Serial port abfragen Java Basics - Anfänger-Themen 18
F Ordner auf alle Unterdatein abfragen Java Basics - Anfänger-Themen 3
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
S boolean Wert von mehreren int Möglichkeiten abfragen ? Java Basics - Anfänger-Themen 4
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
T Erste Schritte Textfeld abfragen ob etwas enthalten ist. Java Basics - Anfänger-Themen 17
S Asynchrone Socket-Abfragen Java Basics - Anfänger-Themen 5
S mehrfache if-Abfragen - beste Lösung Java Basics - Anfänger-Themen 1
E Abfragen des SimpleDateFormats Java Basics - Anfänger-Themen 1
L int array abfragen Java Basics - Anfänger-Themen 16
T Variablen Var aus While-Schleife abfragen -.-' Java Basics - Anfänger-Themen 9
Y Mehrdimensionales Array diagonal abfragen. Java Basics - Anfänger-Themen 5
S Datenbank auf Knopfdruck abfragen Java Basics - Anfänger-Themen 8
T if abfragen verkürzen Java Basics - Anfänger-Themen 5
M Wo Hilfsvariablen abfragen? Java Basics - Anfänger-Themen 1
M Farben/Color Abfragen von Farben innerhalb einer Methode Java Basics - Anfänger-Themen 9
M "Exceptions abfragen" Java Basics - Anfänger-Themen 6
M Frage nach BestPractice in if-Abfragen Java Basics - Anfänger-Themen 1
P Anlegen und Abfragen von Array List Java Basics - Anfänger-Themen 4
R IF Abfragen Java Basics - Anfänger-Themen 8
R If Abfragen Problem! Java Basics - Anfänger-Themen 4
I Button abfragen ob er geklickt wurde Java Basics - Anfänger-Themen 4
C If Abfragen Problem Java Basics - Anfänger-Themen 46
I Drei booleans abfragen Java Basics - Anfänger-Themen 2
R Input/Output Java String abfragen Java Basics - Anfänger-Themen 3
A Vokabel abfragen Java Basics - Anfänger-Themen 3
R Datentypen Datentyp eines Werts in einer Textdateizeile abfragen und ändern Java Basics - Anfänger-Themen 4
N Best Practice Stilistische Anwendung von if/else-Abfragen Java Basics - Anfänger-Themen 7
E Checkboxen abfragen Java Basics - Anfänger-Themen 10
H if abfragen Java Basics - Anfänger-Themen 38
C TreeMap Abfragen Problem Java Basics - Anfänger-Themen 7
S Abfragen wenn das ende einer Tabelle erreicht ist Java Basics - Anfänger-Themen 8
B mehrere Abfragen zusammenfügen Java Basics - Anfänger-Themen 3
H durch Schleife 50 Variablen abfragen Java Basics - Anfänger-Themen 8
B If abfragen! Java Basics - Anfänger-Themen 9
J checkbox status abfragen und drucken Java Basics - Anfänger-Themen 13
M AWT Applet - Button aus anderer Klasse abfragen Java Basics - Anfänger-Themen 4
F Bedingungen mit Abfragen verknüpfen Java Basics - Anfänger-Themen 7
P länge von array abfragen? Java Basics - Anfänger-Themen 2
Gossi Input/Output Datei Lesen, inhalt abfragen, speichern Java Basics - Anfänger-Themen 5
T jNumberField auf null abfragen Java Basics - Anfänger-Themen 5
Z Erste Schritte LinkedList Werte abfragen und vergleichen Java Basics - Anfänger-Themen 3
S Input/Output Welche Möglichkeiten Eingabe von User abfragen Java Basics - Anfänger-Themen 5
H Checkboxstatus abfragen Java Basics - Anfänger-Themen 10
S unzulässigen Wert abfragen - aber wo Java Basics - Anfänger-Themen 3
eLogic Aktive Internetverbindung abfragen Java Basics - Anfänger-Themen 21
B Abfragen eines Preises.. Java Basics - Anfänger-Themen 20
D Touchpad abfragen?! Java Basics - Anfänger-Themen 9
D Abfragen ob Excel-Dateien Makros enthalten? Java Basics - Anfänger-Themen 4
B Abfragen eines Excel-Feldes auf null Java Basics - Anfänger-Themen 17
B GridLayout - elemente mit Maus abfragen Java Basics - Anfänger-Themen 3
B Daten in Instanz einer Klasse ändern / abfragen Java Basics - Anfänger-Themen 12
M Datentypen String mit Trennzeichen abfragen Java Basics - Anfänger-Themen 7
D GUI Checkboxen in allen Klassen abfragen? Java Basics - Anfänger-Themen 5
B OOP String auf bestimmte Zeichen abfragen Java Basics - Anfänger-Themen 4
M Double.NaN abfragen Java Basics - Anfänger-Themen 6
J Performance Vergleich von if-Abfragen mit mehreren Bedingungen Java Basics - Anfänger-Themen 9
H Objecttyp abfragen... Java Basics - Anfänger-Themen 11
N Zeilenanzahl einer TXT abfragen..? Java Basics - Anfänger-Themen 11
T scanner bestimmtes format abfragen Java Basics - Anfänger-Themen 5
T JOptionPane mit .showInputDialog: Ergebnis abfragen? Java Basics - Anfänger-Themen 2
S Absatz aus Textdokument abfragen Java Basics - Anfänger-Themen 6
B gedrückte Tasten abfragen Java Basics - Anfänger-Themen 11
L "unschöne" if-Abfragen Java Basics - Anfänger-Themen 4
JFeel-x JComponent<-----Eigenschaften<-- Als Liste abfragen? Java Basics - Anfänger-Themen 8
P Pixelfarbe abfragen Java Basics - Anfänger-Themen 8
J einfache Tastendrücke in einem JFrame abfragen Java Basics - Anfänger-Themen 2
S if-Abfragen bringen mich zum VERZWEIFELN! Java Basics - Anfänger-Themen 12
B Aus JTable ImageIcon abfragen Java Basics - Anfänger-Themen 8
hdi Desktop-Auflösung abfragen -> setLocation() von Frame Java Basics - Anfänger-Themen 5
D jeditorpane checkbox abfragen? Java Basics - Anfänger-Themen 7
A Googel Lokal abfragen Java Basics - Anfänger-Themen 7
G in einem inputstream auf " " abfragen? Java Basics - Anfänger-Themen 3
T Rechner-Name abfragen Java Basics - Anfänger-Themen 6
N Event auf JTabbedPane abfragen ? Java Basics - Anfänger-Themen 8
M Maus position abfragen und setzen? Java Basics - Anfänger-Themen 1
L JTabel abfragen ob es eine erste Zeile gibt? Java Basics - Anfänger-Themen 2
G If Abfragen Java Basics - Anfänger-Themen 3
T Variablen Classübergreifen abfragen Java Basics - Anfänger-Themen 6
S Abfragen ob Label enabled ist . Java Basics - Anfänger-Themen 2
M Status von ext. Programm abfragen Java Basics - Anfänger-Themen 2
G [Applet] Mauskkoodinaten abfragen Java Basics - Anfänger-Themen 3
C String.split("") einzelne Positionen abfragen Java Basics - Anfänger-Themen 10
R Vector mit contains abfragen Java Basics - Anfänger-Themen 32
T String splitten und auf fehler abfragen Java Basics - Anfänger-Themen 3
V thread, variable abfragen Java Basics - Anfänger-Themen 14
F Abfragen aber wie ? Java Basics - Anfänger-Themen 7
G JDialog-Status im Frame abfragen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben