Merge ints

Status
Nicht offen für weitere Antworten.

foobar

Top Contributor
Hi,
ich möchte 2 hexadezimale Integerwerte als einen großen Wert betrachten d.h. ich habe eine Zahl auf 2 bytes verteilt und will diese jetzt zu einer zusammen fassen. Im Moment habe ich das so gelöst:
Code:
int a = 255;
int b = 255;
int c = Integer.parseInt(Integer.toHexString(a)+Integer.toHexString(b), 16);
System.out.println(">> " + c);

Gibt es dafür eine elegantere oder effizientere Lösung?

Viele Grüße foobar
 
B

Beni

Gast
Bitoperationen können helfen:
Code:
int c = (a << 8) | b; // erzeugt "c = a b"
 
R

Roar

Gast
öff

int c = (a << 8) + b;

und is auch nur ~ 193mal schneller :bae:

edit :(
 

foobar

Top Contributor
Ich bin gerade selber darauf gekommen:
Code:
int c  = a << 8 | b;
 

Leroy42

Top Contributor
Roar hat gesagt.:
und is auch nur ~ 193mal schneller :bae:edit :(
Auf meinem (Büro-)Rechner ist es 4.100 mal schneller (Schleifenoverhead bei Messung berücksichtigt).

Für die Bit-Variante ergibt sich eine Laufzeit von 675 ps (Pico-Sekunden)
Kann das sein? :shock:
 
B

Beni

Gast
Benchmarks für 10 - Zeilen-Programme sind aussagelos. Jenachdem ob und wie optimiert wird, gibt es total andere Resultate.
 

Leroy42

Top Contributor
Guter Einwand.

Weißt du vielleicht auch, ob der JIT beispielsweise erkennen kann, daß nach einer
Zuweisung an eine lokale Variable primitiven Typs nix mehr mit ihr veranstaltet
wird und deshalb die gesamte Zuweisung entsorgt?

- Lokal, damit nicht aus einem anderen Thread zugegriffen werden kann
- Primitiver Typ, damit kein anderer Thread die Attribute manipulieren kann
 
R

Roar

Gast
ja, folgender code:

Code:
for(int i = 0; i < 10000; i++) {
int a = 255;
int b = 255;
int c = (a << 16) | b;
}
sollte vom jit compiler gar nicht ausgeführt, sondern übersprungen werden.
 

Leroy42

Top Contributor
Dann ist mein JIT-Compiler wohl Schrott :(
Wenn die Schleife 10 mal so lang läuft, dauert es auch 10-mal so lange.

[schild=6 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Fast neuwertiger JIT-Compiler! Wolle kaufe?[/schild]
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben