testperf.java

来自「OR Mapping工具」· Java 代码 · 共 125 行

JAVA
125
字号
package org.ephman.junit;import junit.framework.TestCase;import org.ephman.abra.database.*;import org.ephman.junit.generated.*;import org.ephman.xml.*;import java.sql.*;import java.io.*;import java.util.*;import java.util.jar.JarEntry;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.net.URL;import java.net.JarURLConnection;/** a test to try some view operations * @author Paul Bethe */public class TestPerf extends DatabaseTest {    public TestPerf (String name) {        super (name);    }    int TESTS = 1000;    String jarAndEntry = "test-jars.jar!/test.xml";    public void donttestJar () throws Exception {        String name = System.getProperty("user.dir");        if (!name.endsWith("/"))            name += "/";        if (name.indexOf ("junit") == -1) { // running from Abra-0.9 dir              name += "src/org/ephman/junit/";        }        URL u = new URL ("jar:file://" + name + jarAndEntry);        JarURLConnection jconn = (JarURLConnection)u.openConnection();        JarEntry je = (JarEntry)jconn.getJarEntry();        InputStream is = jconn.getJarFile().getInputStream(je);        Reader r = new InputStreamReader(is);        marshaller.mapXMLFile(r);    }    public void testMarshalSpeed () throws Exception {        //marshaller.useAbraXmlParser();        System.out.println (testString);        tryMarshalSpeed ("Marshaller (using reflection)", new BookTester(){            public Book execute(String xml) throws Exception {                return (Book)marshaller.unmarshal(xml);            }        });        tryMarshalSpeed ("custom method.. ", new BookTester(){            public Book execute(String xml) throws Exception {                return (Book)buildBook(xml);            }        });    }    public void tryMarshalSpeed (String method, BookTester tester) throws Exception {        long marshallerStartTime = System.currentTimeMillis();        long marshallerEndTime = 0;        String foo = "";        for (int i=0; i < TESTS; i++) {            Book b = tester.execute (testString);            foo += b.toString();        }        marshallerEndTime = System.currentTimeMillis();        long tDiff = marshallerEndTime - marshallerStartTime;        double diff = (double)1000 * TESTS / (double)(tDiff);        System.out.println ("Method="+method+"\nStart="+new Timestamp (marshallerStartTime)+                "\nFinish="+new Timestamp(marshallerEndTime)+"\nmarshalls/second="+                " was "+ diff);    }    public Book buildBook (String xmlText) throws Exception {        XmlParser parser = new XercesXmlParser(new StringReader(xmlText), false);        XmlNode xn = (XmlNode)parser.parseXml();        assertTrue ("have xml node", xn != null);        assertTrue ("top is book", "Book".equals (xn.getName()));        Book result = new Book ();        result.setAuthor(buildAuthor ((XmlNode)xn.getChildNodes("author").elementAt(0)));        result.setText(((XmlNode)xn.getChildNodes("text").elementAt(0)).getText());        return result;    }    public Author buildAuthor (XmlNode xn) throws Exception {        Author result = new Author ();        result.setFirstName(xn.getAttribute("firstName"));        result.setLastName(xn.getAttribute("lastName"));        result.setBirthday(new Timestamp(Long.parseLong (xn.getAttribute("birthday"))));        result.setHomeAddress(buildAddress ((XmlNode)xn.getChildNodes("homeAddress").elementAt(0)));        result.setWorkAddress(buildAddress ((XmlNode)xn.getChildNodes("workAddress").elementAt(0)));        return result;    }    public Address buildAddress (XmlNode xn) throws Exception {        Address result = new Address ();        result.setState(xn.getAttribute("street"));        result.setCity(xn.getAttribute("city"));        result.setState(xn.getAttribute("state"));        return result;    }    String testString = "<Book ID=\"5\" title=\"The source of all magic\" Isbn=\"425532\">"            + "\t<author ID=\"1\" firstName=\"Douglas\" lastName=\"Adams\" birthday=\"42\">\n" +            "\t\t<homeAddress street=\"The restaurant\" city=\"The End\" state=\"UN\" />\n" +            "\t\t<workAddress street=\"somewhere\" city=\"who knows\" state=\"NY\" />\n"            + "\t</author>\n\t<text>\n" +            "public class LargeObjectManager extends Object" +"\n\n\tjava.lang.Object"            + "</text>\n</Book>\n";    abstract class BookTester {        public abstract Book execute (String xml) throws Exception ;    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?