package rmrs.persist.test; import rmrs.persist.PersistentObject; import rmrs.persist.ObjectSet; import rmrs.persist.PersistException; import rmrs.persist.PersistenceBroker; import rmrs.persist.RelationalBroker; import rmrs.persist.ObjectRelationalBroker; import rmrs.persist.OID; import java.util.Date; import java.io.ObjectOutputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.FileInputStream; import java.util.Enumeration; public class Benchmark { static void main(String args[]) throws PersistException, ClassNotFoundException, java.io.IOException { long dbact= 0; long jos = 0; long start, stop; int argi = 0; int max = Integer.parseInt(args[argi++]); PersistenceBroker pb = null; // java.sql.DriverManager.setLogStream(System.out); if(args[argi].equals("pgsql")) { argi++; Class.forName("postgresql.Driver"); pb = new ObjectRelationalBroker( "jdbc:postgresql://aurora.rg.iupui.edu/test", "scott","tiger"); } else if(args[argi].equals("mysql")) { argi++; Class.forName("org.gjt.mm.mysql.Driver"); pb = new RelationalBroker( "jdbc:mysql://aurora.rg.iupui.edu/test", "scott","tiger"); } else { if(args[argi].equals("hsql")) argi++; Class.forName("hSql.hDriver"); pb = new RelationalBroker("jdbc:HypersonicSQL:test","sa",""); } if(args[argi].equals("save")) { argi++; ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("test.oids")); for(int i = 0; i < max; i++) { Person doc = new Person("Dr. Smith", "Indianapolis", new Date(57,10,15)); Patient a = new Patient("Hans Meier", "Berlin", new Date(66,2,19), "123-45-6789"); Patient b = new Patient("Peter Mueller", "Sondheim", new Date(69,4,10), "987-65-4321"); Observation o1 = new Observation("Na", new Interval(135,138), "mmol/L", new Date()); Observation o2 = new Observation("K", new Interval(3.8,4.0), "mmol/L", new Date()); Observation o3 = new Observation("Cl", new Interval(95.4,97.0), "mmol/L", new Date()); a.setDoctor(doc); a.addObservation(o1); a.addObservation(o2); a.addObservation(o3); start = System.currentTimeMillis(); o1.save(pb); o2.save(pb); o3.save(pb); doc.save(pb); a.save(pb); b.save(pb); stop = System.currentTimeMillis(); dbact += stop - start; start = System.currentTimeMillis(); os.writeObject(doc.getOID()); os.writeObject(a.getOID()); os.writeObject(b.getOID()); stop = System.currentTimeMillis(); jos += stop - start; } } else if(args[argi].equals("load")) { argi++; ObjectInputStream is = new ObjectInputStream(new FileInputStream("test.oids")); for(int i = 0; i < max; i++) { start = System.currentTimeMillis(); OID oid_doc = (OID)is.readObject(); OID oid_a = (OID)is.readObject(); OID oid_b = (OID)is.readObject(); stop = System.currentTimeMillis(); jos += stop - start; start = System.currentTimeMillis(); Person doc = (Person)pb.load(Person.class, oid_doc); Patient a = (Patient)pb.load(Person.class, oid_a); Patient b = (Patient)pb.load(Person.class, oid_b); stop = System.currentTimeMillis(); dbact += stop - start; } } System.out.print("db activity "); System.out.println((float)dbact / (float)max / 1000.0); System.out.print("jos activity "); System.out.println((float)jos / (float)max / 1000.0); } }