Hallo,
ich entwickel momentan meine JAVA NIO Plattform weiter. Diese ist auch voll funktionsfähig und kann im Punkto Performence mit anderen mithalten / diese sogar teilweise übertrumpfen. Allerdings stehe ich vor einem kleinen Problem bei der Implementierung eines weiteren, neuen, einfach zu benutzten Protokolls: Um ein beliebiges Charset vom Benutzer wählen lassen zu können muss ich irgentwie die !höchste Rate von Char zu Byte bestimmen können. Sicher ich könnte einfach solange die BufferOverflowException abfangen und den ByteBuffer um 10% vergrößern, bis er groß genug ist um den nächsten Schwung zu fassen. Allerdings ist das ja nicht optimal da es auch um Performence geht. UTF8 zum Beispiel hat eine andere CharToByte Rate als ISO-xxx-xx zum Beispiel. Bei UTF8 ist es zum Beispiel bis zu 4 Byte. Bei einem ISO-xxx-xx ist es nur 1 Byte. Meine Idee war einfach die Länge des Strings mal CharToByteRate und ab damit... Allerdings bin ich nach längeren suchen und lesen der APInoch nicht fündig geworden. Und einfach Overkill mit 8 Byte was glaube ich atm das größte ist find ich auch nicht so toll. Ram-Probleme enstehen dabei nicht, weil der Buffer der die Daten später zwischenspeichert sowieso nur Daten enthält und auf diese Länge gekürzt wird.
Das Problem ist also heraus zu finden, wieviel Bytes das jeweilige Charset pro Char maximal braucht...
ich entwickel momentan meine JAVA NIO Plattform weiter. Diese ist auch voll funktionsfähig und kann im Punkto Performence mit anderen mithalten / diese sogar teilweise übertrumpfen. Allerdings stehe ich vor einem kleinen Problem bei der Implementierung eines weiteren, neuen, einfach zu benutzten Protokolls: Um ein beliebiges Charset vom Benutzer wählen lassen zu können muss ich irgentwie die !höchste Rate von Char zu Byte bestimmen können. Sicher ich könnte einfach solange die BufferOverflowException abfangen und den ByteBuffer um 10% vergrößern, bis er groß genug ist um den nächsten Schwung zu fassen. Allerdings ist das ja nicht optimal da es auch um Performence geht. UTF8 zum Beispiel hat eine andere CharToByte Rate als ISO-xxx-xx zum Beispiel. Bei UTF8 ist es zum Beispiel bis zu 4 Byte. Bei einem ISO-xxx-xx ist es nur 1 Byte. Meine Idee war einfach die Länge des Strings mal CharToByteRate und ab damit... Allerdings bin ich nach längeren suchen und lesen der APInoch nicht fündig geworden. Und einfach Overkill mit 8 Byte was glaube ich atm das größte ist find ich auch nicht so toll. Ram-Probleme enstehen dabei nicht, weil der Buffer der die Daten später zwischenspeichert sowieso nur Daten enthält und auf diese Länge gekürzt wird.
Das Problem ist also heraus zu finden, wieviel Bytes das jeweilige Charset pro Char maximal braucht...