Re: Performance question
Jordi wrote:
Hello.
I am building a client-server application.
I need to send and receive information in both sides, and do some
computing with it in both sides.
So I will build a custom protocol for that.
I have these options:
1) Send and receive objects that contain the info.
2) Send text, and cut it in pieces that will be stored in a temporal
object so I can deal with the information easier. Then destroy the
object after that.
3) Deal all time with text. This may make the code very complex.
Basically, some people told me that solytion 1 can make some loose of
performance, as text is faster to transmit than objects.
The solution 3 can be a pain, but I am not very worried, as I will be
the only one that reads my code.
I think 2 is the best, as I will be able to transmit info fast and
will use a temporal object just to handle easy the information.
All time I will send and receive byte arrays by NIO.
My question has to deal about knowing if I loose bandwith or CPU
cycles more or less if I do 1, 2 or 3.
Thanks for any advice.
Jordi
At a low enough level, #1 and #2 are identical. I don't exactly know how
Java handles the sending of objects, but I would assume that it would be
along the lines of sending some uid and then serialized data.
The best option is probably to do #2, although if you are (for example)
sending numbers, it would probably be better to use binary instead of text.
There are two things to say about optimization. First, it probably does
not matter 90% of the time. Second, try all the feasible options and
then profile to figure out which is the fastest. Intuitively, number 3
is probably the slowest; options 1 and 2 are probably about as equally fast.