Skip to Main Content

Java APIs

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How to improve sockets performance

843790Mar 13 2008 — edited Mar 13 2008
Using sockets as a communication protocol gives me performance around 6000-13000 messages per seconds depending on the computer I use. It's not enough for me and I want to process at least 20000-30000 MpS on 2Ghz Core Duo CPU. Is there any way how could I improve performance of the following code? Maybe using RMI instead of sockets?

Simple client:
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

public class client
{
        public static void main (String args[])
        {
                try
        {
            Socket client=new Socket("localhost",1234);
            ObjectInputStream ois=new ObjectInputStream(client.getInputStream());
            ObjectOutputStream oos=new ObjectOutputStream(client.getOutputStream());
            long t1= System.currentTimeMillis(),t2,cnt=10000;
            for (int i=0;i<cnt;i++)
            {
                oos.writeObject("ping");
                String s=(String)ois.readObject();
            }
            t2=System.currentTimeMillis();
            System.out.println("Performance: "+1000*cnt/(t2-t1)+" MpS");
        } 
                catch (Exception e)
        {
                        e.printStackTrace();
        }
        }
}
Simple server
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.ServerSocket;

public class server
{
        public static void main (String args[])
        {
                try
        {
            ServerSocket server=new ServerSocket(1234);
            Socket client=server.accept();
            ObjectOutputStream oos=new ObjectOutputStream(client.getOutputStream());
            ObjectInputStream ois=new ObjectInputStream(client.getInputStream());
            while (true)
            {
                String msg=(String)ois.readObject();
                oos.writeObject("pong"+msg);
            }
        } 
                catch (Exception e)
        {
                        e.printStackTrace();
        }
        }
}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Apr 10 2008
Added on Mar 13 2008
7 comments
734 views