instinct
2009-07-11, 11:40:04
Ich versuche mal mein Problem zu schildern:
Ich kopiere Daten und will diese Daten so effizient wie möglich manipulieren.
Meine Kopiergeschwindigkeit liegt bei etwa 3GB/s. Das Modifizieren hängt natürlich von der Datengröße ab und wird wohl nicht den obigen Wert erreichen, allerdings liegt mein derzeitiger Wert sehr weit entfernt.
Beispieldaten: 256 * 256 * 4 Floats (4 byte pro Float)
Ich gehe momentan vom Worst Case aus und will alle 256 * 256 * 4 Werte einmal überschreiben (Später muss ich wohl nur einen Teil manipulieren).
Ich bekomme die Daten als java.nio.ByteBuffer.
Meine aktuelle Vorgehensweise:
- buffer.asFloatBuffer()
- buffer.clear()
- Den Buffer einmal neu füllen
- buffer.rewind()
Damit erreiche ich sehr schlechte Werte. In C würde ich das Ganze mit memcpy lösen und hätte keinerlei Probleme, aber in Java?
Hat jemand vielleicht eine Idee, wie ich Daten schneller manipulieren kann?
Ich kopiere Daten und will diese Daten so effizient wie möglich manipulieren.
Meine Kopiergeschwindigkeit liegt bei etwa 3GB/s. Das Modifizieren hängt natürlich von der Datengröße ab und wird wohl nicht den obigen Wert erreichen, allerdings liegt mein derzeitiger Wert sehr weit entfernt.
Beispieldaten: 256 * 256 * 4 Floats (4 byte pro Float)
Ich gehe momentan vom Worst Case aus und will alle 256 * 256 * 4 Werte einmal überschreiben (Später muss ich wohl nur einen Teil manipulieren).
Ich bekomme die Daten als java.nio.ByteBuffer.
Meine aktuelle Vorgehensweise:
- buffer.asFloatBuffer()
- buffer.clear()
- Den Buffer einmal neu füllen
- buffer.rewind()
Damit erreiche ich sehr schlechte Werte. In C würde ich das Ganze mit memcpy lösen und hätte keinerlei Probleme, aber in Java?
Hat jemand vielleicht eine Idee, wie ich Daten schneller manipulieren kann?