hoewel het geen echt probleem is vertraagd een deel van mijn code naar mijn zin iets te veel.
Ik stuur een byte[] array encoded met base64 via XML-RPC door van mijn server naar mijn client. (ik MOET XML-RPC gebruiken dus daar erger ik me niet aan).
nu die byte[] is eigenlijk een structuur die ik zelf bouw die Data van een DB doorstuurt (row/col). Ik had dit al in puur XML-RPC gedaan maar aangezien die voor elk veld in elke row effe gaat zeggen wat type dit is plus nog encoden vond ik dat wel snel erg groot/traag worden.
ik doe dus op de server ies van
nou goed dat gaat lekker. (als dat al sneller kan... graag weten)
maar op de client moet ik die strings dus gaan 'parsen' en daar vind ik helemaal
geen goede standard voort dus schreef ik dit:
maar dat vind ik zo oerlelijk en lijkt me ook traag - enig idee hoe je als je weet hoeveel bytes (chars) moet uitlezen van een byte[] je dit sneller in een String
krijgt. Begin wel te snappen waarom Java op string gebied echt wel traag is...
als zo'n optimize vraag niet ter orde is op het forum dan apologies... Maar als vroeger assembler coder geobsedeerd door speed vroeg ik me het gewoon af. weet ik direct of ik in de toekomst daar met java nog mee moet bezig zijn op ineens opgeven
Ik stuur een byte[] array encoded met base64 via XML-RPC door van mijn server naar mijn client. (ik MOET XML-RPC gebruiken dus daar erger ik me niet aan).
nu die byte[] is eigenlijk een structuur die ik zelf bouw die Data van een DB doorstuurt (row/col). Ik had dit al in puur XML-RPC gedaan maar aangezien die voor elk veld in elke row effe gaat zeggen wat type dit is plus nog encoden vond ik dat wel snel erg groot/traag worden.
ik doe dus op de server ies van
Java:
1
2
3
4
5
6
7
8
| ByteArrayOutputStream bos = new ByteArrayOutputStream(65000); DataOutputStream dos = new DataOutputStream(bos); dos.writeInt(tColumns); //en voor elke string die ik will doorgeven int tLength = myString.length(); dos.writeInt(tLength); //zodat ie niet moet zoeken naar eind string... dos.writeBytes(myString); //geen unicode required |
nou goed dat gaat lekker. (als dat al sneller kan... graag weten)
maar op de client moet ik die strings dus gaan 'parsen' en daar vind ik helemaal
geen goede standard voort dus schreef ik dit:
Java:
1
2
3
4
5
6
7
8
9
10
| static private String readString(DataInputStream aDIS, int length) throws Exception { StringBuffer tSB = new StringBuffer(length); while (length > 0) { tSB.append((char)aDIS.readByte()); length--; } return tSB.toString(); } |
maar dat vind ik zo oerlelijk en lijkt me ook traag - enig idee hoe je als je weet hoeveel bytes (chars) moet uitlezen van een byte[] je dit sneller in een String
krijgt. Begin wel te snappen waarom Java op string gebied echt wel traag is...
als zo'n optimize vraag niet ter orde is op het forum dan apologies... Maar als vroeger assembler coder geobsedeerd door speed vroeg ik me het gewoon af. weet ik direct of ik in de toekomst daar met java nog mee moet bezig zijn op ineens opgeven