# Problem Performance Client-Server



## kale1990 (24. Jun 2009)

hallo,

bin gerade dabei den client zu optimieren, dabei fiel mir auf, dass der java-client bis zu 10 mal länger braucht um zwei bytes zu empfangen als ein client in c++...
ich öffne eine Socketverbindung und erstelle einen bufferedinputstream mit


```
input = new BufferedInputStream(echoSocket.getInputStream());
```

und lese dann bytes mit


```
readBytes = input.read(byteArr, 0, bytesToRead);
```
 und dieses lesen dauert teilweiße bis zu 10 mal so lang...am server kann es ja nicht liegen, da der c++-client es schneller macht...es ist scho klar das c++ schneller ist aber gleich 10 mal?? kann ich hier etwas optimieren bzw. gibt es eine bessere möglichkeit hier die bytes vom socket zu lesen?


----------



## tuxedo (24. Jun 2009)

* Hast du's mal ohne diesen Buffer probiert?
* Wieviele Bytes werden denn gesendet? Wenns nur wenige sind, solltest du auf der Senderseite mal ein "flush()" auf den Stream probieren und ggf. mal nach "Nagle-Algo" auf dem Socket abschalten.

- Alex


----------



## byte (24. Jun 2009)

Articles: Tuning Java I/O Performance


----------



## kale1990 (24. Jun 2009)

Ohne verwendung des BufferInputStreams wird es eher langsamer...
serverseite(senderseite) ist ein c-server...an diesem kann es nicht liegen, da ein c++ client auch schneller empfangen kann!


----------



## homer65 (25. Jun 2009)

Um zwei Bytes zu empfangen einen riesigen Buffer aufzubauen ist ja auch nicht performant. Ist den die übertragene Datenmenge immer von dieser Größe?


----------



## kale1990 (25. Jun 2009)

@homer65:
nein die datenmenge ist immer unterschiedlich!


----------

