Ich habe ein Byte [], das serialisierte C++ - Datentypen enthält (so hat es ein seltsames Format, das die Standard-Java-Serialisierungsklassen nicht verstehen können). Ich habe meinen eigenen Deserialisierer erstellt, der Flags mit Typen vergleicht und sie in das entsprechende Objekt konvertiert (Eingabe könnte etwas wie dieses int64 mit dem Wert 4 [3, 0, 0, 0, 0, 0, 0, 0, 4], 3 ist der Merker für int64)Java: Konvertieren Byte-Stream in Objekte sehr effizient
private final ByteBuffer byteWrapper;
// member ByteBuffer which is allocated in the ctor
ctor { byteWrapper = ByteBuffer.allocateDirect(8); }
// somewhere in the parse function, this case matches an int64
case 3:
{
return byteWrapper.wrap(ios.getBytes(8)).getLong();
}
Wo ios die vollständigen Serialisierungsdaten zum einfachen Lesen enthält. Nun, das funktioniert gut, aber hoher Durchsatz ist sehr wichtig für diesen Teil des Codes und ich bin kein normaler Java-Programmierer, also frage ich mich nur, ob jemand irgendwelche Vorschläge hat, diesen Prozess zu beschleunigen, entweder durch Überarbeitung, was ich ' Werde oder benutze ich verschiedene Klassen/Funktionen oder irgendetwas? Speicher ist kein Problem, ich bin nur an Geschwindigkeit interessiert
Das klingt gut, aber es sieht aus wie mein ios (java.io.InputStream) hat diese Methode nicht, gibt es einen anderen Strom, den ich verwenden sollte? – Madden
@Madden bearbeitet noch einmal theres etwas, das Sie beachten sollten. –