Hey,
ich habe eine Methode, die oft aufgerufen wird. Die Methode empfängt zwei Zahlen, die verschiedene Werte haben können. Für den Fall, dass die Werte 0xFFFFFF sind, sollen diese auf 1 gemappt werden. Eventuell kommen noch 2 oder 3 Werte hinzu, die auf 1 gemappt werden sollen, da die process-Methode nur mit Nullen und Einen arbeiten soll.
Die if-Abfragen sind im Moment ein gewisser Bottleneck, ich vermute dass das was mit schlechter Branch-Prediction zu tun hat. Deswegen bin ich auf der Suche nach dem schellsten Mapping was möglich ist um 2 oder 3 bestimmte Integer auf 1 zu mappen.
Eine HashMap ist mir schon in den Sinn gekommen, ist aber vllt. nicht unbedingt die schnellste Variante.
Alternativ könnte ich ein Array, als Lookup-Table benutzen, aber die Eingabezahlen sind unter Umständen negativ und ich müsste ein sehr großes Array erstellen, für die paar Zahlen, was auch nicht unbedingt optimal ist.
Vllt. kennt jemand von euch eine sehr effiziente Variante int-Zahlen zu mappen.
Grüße
#Edit: Sorry, ganz vergessen den Code anzuhängen.
Was ich meine ist in etwa sowas:
[code]public void criticalMethod(int a, int b) {
if (a == 0xFFFFFFFF) a = 1;
if (b == 0xFFFFFFFF) b = 1;
process(a, b);
}[/code]