klausschreiber
Well-known member
- 6 Mai 2006
- 247
- 8
Hallo,
die erste Frage ist jetzt nicht unbedingt javaspezifisch, aber ich stelle sie trotzdem mal hier dazu. Ich habe zwei Zahlen, die jeweils bis 1,7 Mio groß werden können, also jeweils bis zu 21 Bits benötigen. Einen Datentyp mit 21 Bit gibt es ja nicht, sondern der nächstgrößere Datentyp wäre Int mit 32 Bit. Ich könnte die beiden Zahlen natürlich zusammengefasst als ein Int und ein Short speichern, sodass nur 46 Bit, anstatt 64 Bit benötigt würden (oder in einem Int, einem Byte und zwei Booleans
), aber ich denke mal, das ist performancemäßig mit den ganzen nötigen Bitshifts und Konjunktionen auch nicht wirklich so der Hit, oder?
Ich glaube zwar kaum, aber es gibt nicht zufällig einen Trick, zwei 1,7 Mio große Zahlen so zusammen zu fassen, dass sie in 32 Bit reinpassen, oder?
Bevor die Frage kommt: Bei kleinen Datenmengen ist der Speicherplatz natürlich irrelevant, aber das soll ein Array werden, wo 32bit zu 64bit mehrere Megabyte ausmachen und das Array soll im Arbeitsspeicher eines Handys vorgehalten werden, sodass ich es schon gerne so klein wie möglich hätte. Die Performance spielt aber auch eine Rolle, weil durchaus in einem Durchlauf tausende bis womöglich hunderttausende Lookups stattfinden können.
Dann noch meine zweite Frage:
Wenn ich in Java einen Wert in einem zweidimensionalem Array abrufe, z.B. wert[5][3], ist das dann ein Lookup oder muss Java da erstmal nach dem 5. Eintrag schauen und dann als nächstes erst nach der 3?
Danke und Gruß,
Klaus
die erste Frage ist jetzt nicht unbedingt javaspezifisch, aber ich stelle sie trotzdem mal hier dazu. Ich habe zwei Zahlen, die jeweils bis 1,7 Mio groß werden können, also jeweils bis zu 21 Bits benötigen. Einen Datentyp mit 21 Bit gibt es ja nicht, sondern der nächstgrößere Datentyp wäre Int mit 32 Bit. Ich könnte die beiden Zahlen natürlich zusammengefasst als ein Int und ein Short speichern, sodass nur 46 Bit, anstatt 64 Bit benötigt würden (oder in einem Int, einem Byte und zwei Booleans

Ich glaube zwar kaum, aber es gibt nicht zufällig einen Trick, zwei 1,7 Mio große Zahlen so zusammen zu fassen, dass sie in 32 Bit reinpassen, oder?
Bevor die Frage kommt: Bei kleinen Datenmengen ist der Speicherplatz natürlich irrelevant, aber das soll ein Array werden, wo 32bit zu 64bit mehrere Megabyte ausmachen und das Array soll im Arbeitsspeicher eines Handys vorgehalten werden, sodass ich es schon gerne so klein wie möglich hätte. Die Performance spielt aber auch eine Rolle, weil durchaus in einem Durchlauf tausende bis womöglich hunderttausende Lookups stattfinden können.
Dann noch meine zweite Frage:
Wenn ich in Java einen Wert in einem zweidimensionalem Array abrufe, z.B. wert[5][3], ist das dann ein Lookup oder muss Java da erstmal nach dem 5. Eintrag schauen und dann als nächstes erst nach der 3?
Danke und Gruß,
Klaus