B
beurk
Gast
Hallo,
ich hab ein leicht verzwicktes Problem und möglicherweise kann mir jemand von euch helfen.
Ich hab eine Datei mit ca. 1.5 Mio. Ints bzw. 4-mal so vielen Bytes drin. Diese lese ich mittels InputStream in ein entsprechend großes Byte-array (die Größen sind vorher bekannt und daher kein Problem) ein.
Das eigentliche Problem besteht jetzt darin, dieses array zu sortieren und dabei soll der Inhalt als Integer interpretiert werden und nicht als Byte! Die Umwandlung in ein Int-Array ist aus Performancegründen und weil der Speicher begrenzt ist nicht möglich (Beides passt nicht gleichzeitig auf den Heap).
Nun meine 3 Lösungansätze:
1. Irgendwie (??) das 1-dimensionale byte-array auf ein byte[][4] casten. Ich schätze mal, dass es nicht möglich ist, aber vielleicht geht's ja doch
Danach könnte ich locker Array.sort verwenden und einen simplen Comparator dazu erstellen.
2. Eine eigene Sortierfunktion schreiben. QuickSort und Konsorten sind bekannt, aber ich bezweifle, dass ich alle Tricks kenne um die gleiche Performance wie Array.sort zu erreichen.
3. Die Daten anders einlesen und direkt ein byte[][4] oder int[] Array erhalten. (Performance ist sehr wichtig!)
Was denkt ihr? (Ich tendiere wegen Unkenntnis für 1. und 3. zu Lösung 2)
ich hab ein leicht verzwicktes Problem und möglicherweise kann mir jemand von euch helfen.
Ich hab eine Datei mit ca. 1.5 Mio. Ints bzw. 4-mal so vielen Bytes drin. Diese lese ich mittels InputStream in ein entsprechend großes Byte-array (die Größen sind vorher bekannt und daher kein Problem) ein.
Das eigentliche Problem besteht jetzt darin, dieses array zu sortieren und dabei soll der Inhalt als Integer interpretiert werden und nicht als Byte! Die Umwandlung in ein Int-Array ist aus Performancegründen und weil der Speicher begrenzt ist nicht möglich (Beides passt nicht gleichzeitig auf den Heap).
Nun meine 3 Lösungansätze:
1. Irgendwie (??) das 1-dimensionale byte-array auf ein byte[][4] casten. Ich schätze mal, dass es nicht möglich ist, aber vielleicht geht's ja doch
2. Eine eigene Sortierfunktion schreiben. QuickSort und Konsorten sind bekannt, aber ich bezweifle, dass ich alle Tricks kenne um die gleiche Performance wie Array.sort zu erreichen.
3. Die Daten anders einlesen und direkt ein byte[][4] oder int[] Array erhalten. (Performance ist sehr wichtig!)
Was denkt ihr? (Ich tendiere wegen Unkenntnis für 1. und 3. zu Lösung 2)