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();
}
}
}