package org.atomnuke.performance; import com.rackspace.papi.commons.util.io.RawInputStreamReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import org.atomnuke.atom.io.AtomReaderFactory; import org.atomnuke.atom.io.AtomWriterFactory; import org.atomnuke.atom.io.reader.sax.SaxAtomReaderFactory; import org.atomnuke.atom.io.writer.stax.StaxAtomWriterFactory; /** * * @author zinic */ public class ParserPerformance { public static InputStream open(String name) throws IOException { return ParserPerformance.class.getResourceAsStream("/META-INF/examples/atom/" + name); } public static void main(String[] args) throws Exception { int iterationLimit = 20000; long tstampMillis = System.currentTimeMillis(); int elapsed; final AtomWriterFactory writerFactory = new StaxAtomWriterFactory(); final AtomReaderFactory readerFactory = new SaxAtomReaderFactory(); final byte[] bytes = RawInputStreamReader.instance().readFully(open("PerformanceTestContents.xml")); final ByteArrayOutputStream output = new ByteArrayOutputStream(); for (int i = 0; i < iterationLimit; i++) { writerFactory.getInstance().write(output, readerFactory.getInstance().read(new ByteArrayInputStream(bytes)).getEntry()); output.reset(); } elapsed = (int) (System.currentTimeMillis() - tstampMillis); System.out.println("Elapsed time: " + elapsed + "ms - Average runtime: " + ((double) elapsed / (double) iterationLimit) + "ms"); } }