B
Blackbam
Gast
Hallo,
ich stehe gerade vor folgendem Problem, für das mir einfach keine schöne Lösung einfallen will:
Es gibt einen User-Input der folgendermaßen aussieht:
Es soll folgende Operation durchgeführt werden:
Natürlich hätte ich jetz die Möglichkeit eine Funktion zu schreiben die 5 Parameter entgegennimmt (siehe unten), mittels switch-case die Operanden auflöst die Rechnung durchführt und ein Ergebnis zurückgibt - allerdings läuft die Berechnung der 3 Werte in einer Schleife ab die 480000 mal in einer Möglichst kurzen Zeit (1/100 Sekunde) ablaufen soll, wobei die Operanden und Variablen bis auf nR/nG/nB immer gleich bleiben. Kennt jemand also eine Möglichkeit, zur Laufzeit eine Funktion zu definieren, der ich dann immer nur mehr 1 Parameter übergeben muss? Oder weiß sonst jemand wie es schneller ginge?
Meine momentane Lösung sieht folgendermaßen aus - überflüßig zu erwähnen, dass wenn 1.5 Millionen Aufrufe in 1/100 Sekunde stattfinden sollen, der PC ziemlich in die Knie geht - bekommen auch zeitweise "Out of Memory" errors:
ich stehe gerade vor folgendem Problem, für das mir einfach keine schöne Lösung einfallen will:
Es gibt einen User-Input der folgendermaßen aussieht:
Java:
String op1; // ein Operand: "+" oder "*" oder "-" oder "/" aus dem User- Input
String op2; // ein Operand: "+" oder "*" oder "-" oder "/" aus dem User- Input
String op3; // ein Operand: "+" oder "*" oder "-" oder "/" aus dem User- Input
String op4; // ein Operand: "+" oder "*" oder "-" oder "/" aus dem User- Input
String op5; // ein Operand: "+" oder "*" oder "-" oder "/" aus dem User- Input
String op6; // ein Operand: "+" oder "*" oder "-" oder "/" aus dem User- Input
int ubR; // ein Integer-Wert aus dem User- Input
int ubG; // ein Integer-Wert aus dem User- Input
int ubB; // ein Integer-Wert aus dem User- Input
int nbR; // ein Integer-Wert aus dem User- Input
int nbG; // ein Integer-Wert aus dem User- Input
int nbB; // ein Integer-Wert aus dem User- Input
int nR; // ein Integer-Wert aus dem Programm, der stets variiert
int nB; // ein Integer-Wert aus dem Programm, der stets variiert
int nC; // ein Integer-Wert aus dem Programm, der stets variiert
Es soll folgende Operation durchgeführt werden:
Java:
/* Pseudo Code Notation */
wert1 = ubR op1 nR op2 nbR;
wert2 = ubG op3 nG op4 ngR;
wert3 = ubB op5 nB op6 ngB;
Natürlich hätte ich jetz die Möglichkeit eine Funktion zu schreiben die 5 Parameter entgegennimmt (siehe unten), mittels switch-case die Operanden auflöst die Rechnung durchführt und ein Ergebnis zurückgibt - allerdings läuft die Berechnung der 3 Werte in einer Schleife ab die 480000 mal in einer Möglichst kurzen Zeit (1/100 Sekunde) ablaufen soll, wobei die Operanden und Variablen bis auf nR/nG/nB immer gleich bleiben. Kennt jemand also eine Möglichkeit, zur Laufzeit eine Funktion zu definieren, der ich dann immer nur mehr 1 Parameter übergeben muss? Oder weiß sonst jemand wie es schneller ginge?
Meine momentane Lösung sieht folgendermaßen aus - überflüßig zu erwähnen, dass wenn 1.5 Millionen Aufrufe in 1/100 Sekunde stattfinden sollen, der PC ziemlich in die Knie geht - bekommen auch zeitweise "Out of Memory" errors:
Java:
int nR = mCV(ubR,op1,rC,op2,nbR);
public int mCV(int a,String o,int b,String p,int c) {
int ret = 0;
if(o == "+") {
if(p == "+") {
ret = a+b+c;
} else if(p=="-") {
ret = a+b-c;
} else if(p=="*") {
ret = a+b*c;
} else if(p=="/") {
ret = a+b/c;
}
} else if(o=="-") {
if(p == "+") {
ret = a-b+c;
} else if(p=="-") {
ret = a-b-c;
} else if(p=="*") {
ret = a-b*c;
} else if(p=="/") {
ret = a-b/c;
}
} else if(o=="*") {
if(p == "+") {
ret = a*b+c;
} else if(p=="-") {
ret = a*b-c;
} else if(p=="*") {
ret = a*b*c;
} else if(p=="/") {
ret = a*b/c;
}
} else if(o=="/") {
if(p == "+") {
ret = a/b+c;
} else if(p=="-") {
ret = a/b-c;
} else if(p=="*") {
ret = a/b*c;
} else if(p=="/") {
ret = a/b/c;
}
}
return ret;
}