In debugging a slight performance problem in an application today, I discovered something interesting.
Basically, using BufferedReader to read some XML from a raw socket is several orders of magnitude faster than using BufferedInputStream.
Now I have always known that BufferedReader is preferable as it provides locale sensitive character data, but I had not realised that there was such a performance difference in using it, if anything I would have expected it to be less efficient as it is dealing with locale information.
Time to start looking for other areas in our aplpications still using Input and Output Streams!