package demo.benchmark; import java.io.*; import org.omg.CosNaming.*; /** * A simple benchmark for remote invocations. It takes the system clock right * before and after method invocations. Originally adopted from code by * Christophe Warland */ public class Client { public static void main (String args[]) throws Exception { org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init (args, null); bench server = null; if (args.length > 0) { try { File f = new File (args[0]); BufferedReader br = new BufferedReader (new FileReader (f)); String ior = br.readLine (); br.close (); server = benchHelper.narrow (orb.string_to_object (ior)); } catch (Exception e) { e.printStackTrace (); System.exit (1); } } else { NamingContextExt nc = NamingContextExtHelper.narrow (orb.resolve_initial_references ("NameService")); server = benchHelper.narrow (nc.resolve (nc.to_name ("benchmark"))); } System.out.print (" Ping [1]\n" + " Transfer array of int [2]\n" + " Transfer array of byte [3]\n" + " Transfer array of struct [4]\n" + " Transfer array of string [5]\n" + " \n" + " Auto mode - Long! - [auto]\n" + " EXIT [0]\n" + " --------------------------------\n" + " Your choice : "); DataInput d = new DataInputStream (System.in); String line; while ((line = d.readLine ()) != null) { if (line.equals ("1")) { System.out.print (" Number of loops : "); int loop = new Integer (d.readLine ()).intValue (); int nb = loop; long startTime = 0; long stopTime = 0; startTime = System.currentTimeMillis (); while (nb-- > 0) { server.ping (); } stopTime = System.currentTimeMillis (); System.out.println (">>> Elapsed time = " + (stopTime - startTime) / 1000 + " secs avg time = (" + ((stopTime - startTime) / (float) loop) + ") msecs"); } else if (line.equals ("2")) { System.out.print (" Number of loops : "); int loop = new Integer (d.readLine ()).intValue (); int nb = loop; System.out.print (" Size of array : "); int size = new Integer (d.readLine ()).intValue (); int myInt[] = new int[size]; for (int si = 0; si < size; si++) { myInt[si] = si; } int ret_vals[] = null; long startTime = System.currentTimeMillis (); while (nb-- > 0) { ret_vals = server.intTransfer (myInt); } // for(int i = 0; i < size; System.out.print(" " + // ret_vals[i++])); long stopTime = System.currentTimeMillis (); System.out.println (">>> Elapsed time = " + (stopTime - startTime) / 1000 + " secs Average time = " + ((stopTime - startTime) / (float) loop) + " msecs"); } else if (line.equals ("3")) { // byte arrays System.out.print (" Number of loops : "); int loop = new Integer (d.readLine ()).intValue (); int nb = loop; System.out.print (" Size of array : "); int size = new Integer (d.readLine ()).intValue (); byte mybytes[] = new byte[size]; long startTime = System.currentTimeMillis (); while (nb-- > 0) { server.octetTransfer (mybytes); } long stopTime = System.currentTimeMillis (); System.out.println (">>> Elapsed time = " + (stopTime - startTime) / 1000 + " secs Average time = " + ((stopTime - startTime) / (float) loop) + " msecs"); } else if (line.equals ("4")) { // struct arrays System.out.print (" Number of loops : "); int loop = new Integer (d.readLine ()).intValue (); int nb = loop; System.out.print (" Array Size : "); int size = new Integer (d.readLine ()).intValue (); Struct myStruct[] = new Struct[size]; for (int si = 0; si < size; si++) myStruct[si] = new Struct (); long startTime = System.currentTimeMillis (); while (nb-- > 0) { server.structTransfer (myStruct); } long stopTime = System.currentTimeMillis (); System.out.println (">>> Elapsed time = " + (stopTime - startTime) / 1000 + " secs Average time = " + ((stopTime - startTime) / (float) loop) + " msecs"); } else if (line.equals ("5")) { // string arrays System.out.print (" Number of loops : "); int loop = new Integer (d.readLine ()).intValue (); int nb = loop; System.out.print (" Array size: "); int size = new Integer (d.readLine ()).intValue (); String myString[] = new String[size]; for (int si = 0; si < size; si++) myString[si] = "testString"; long startTime = System.currentTimeMillis (); while (nb-- > 0) { server.stringTransfer (myString); } // System.exit(0); long stopTime = System.currentTimeMillis (); System.out.println (">>> Elapsed time = " + (stopTime - startTime) / 1000 + " secs Average time = " + ((stopTime - startTime) / (float) loop) + " msecs"); } else if (line.equals ("auto")) { System.out.println ("#### Entering auto-mode ####"); System.out.print (" Number of loops : "); int loop = new Integer (d.readLine ()).intValue (); int size = 1; System.out.println ("\n Results are average times in msecs for " + loop + " round trips\n"); System.out.println (" Array size Ping int[] byte[] struct[] string[]"); System.out.println (" ============= ======== ====== ======= ========== ========="); for (int i = 0; i < 6; i++) { System.out.print ("\t" + size); int myInt[] = new int[size]; byte myByte[] = new byte[size]; Struct myStruct[] = new Struct[size]; String myString[] = new String[size]; for (int si = 0; si < size; si++) { myStruct[si] = new Struct (); myInt[si] = si; myString[si] = "testString"; } long startTime = System.currentTimeMillis (); int nb = loop; while (nb-- > 0) server.ping (); long stopTime = System.currentTimeMillis (); System.out.print ("\t" + ((stopTime - startTime) / (float) loop)); startTime = System.currentTimeMillis (); nb = loop; while (nb-- > 0) server.intTransfer (myInt); stopTime = System.currentTimeMillis (); System.out.print ("\t" + ((stopTime - startTime) / (float) loop)); startTime = System.currentTimeMillis (); nb = loop; while (nb-- > 0) server.octetTransfer (myByte); stopTime = System.currentTimeMillis (); System.out.print ("\t" + ((stopTime - startTime) / (float) loop)); startTime = System.currentTimeMillis (); nb = loop; while (nb-- > 0) server.structTransfer (myStruct); stopTime = System.currentTimeMillis (); System.out.print ("\t" + ((stopTime - startTime) / (float) loop)); startTime = System.currentTimeMillis (); nb = loop; while (nb-- > 0) server.stringTransfer (myString); stopTime = System.currentTimeMillis (); System.out.print ("\t" + ((stopTime - startTime) / (float) loop)); System.out.println (); size = size * 10; } System.out.println ("\n#### Exiting auto-mode ####\n"); } else if (line.equals ("0")) { System.out.println ("\nExiting ..."); orb.shutdown (true); return; // System.exit(0); } System.out.print (" Ping [1] Array of int [2] Array of byte [3] " + "Array of struct [4] : "); } // while orb.shutdown (true); } }