[Practicalxml-commits] SF.net SVN: practicalxml:[177] branches/dev-1.1/src
Brought to you by:
kdgregory
|
From: Auto-Generated S. C. M. <pra...@li...> - 2009-10-28 18:29:41
|
Revision: 177
http://practicalxml.svn.sourceforge.net/practicalxml/?rev=177&view=rev
Author: kdgregory
Date: 2009-10-28 18:29:33 +0000 (Wed, 28 Oct 2009)
Log Message:
-----------
move performance tests into their own top-level src folder (not part of normal build)
Added Paths:
-----------
branches/dev-1.1/src/perftest/
branches/dev-1.1/src/perftest/java/
branches/dev-1.1/src/perftest/java/net/
branches/dev-1.1/src/perftest/java/net/sf/
branches/dev-1.1/src/perftest/java/net/sf/practicalxml/
branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/
branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/AbstractPerformanceTest.java
branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/converter/
branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/converter/BeanExerciser.java
branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/converter/JsonExerciser.java
branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/package.html
Removed Paths:
-------------
branches/dev-1.1/src/example/java/net/sf/practicalxml/perftest/
Copied: branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/AbstractPerformanceTest.java (from rev 176, branches/dev-1.1/src/example/java/net/sf/practicalxml/perftest/AbstractPerformanceTest.java)
===================================================================
--- branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/AbstractPerformanceTest.java (rev 0)
+++ branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/AbstractPerformanceTest.java 2009-10-28 18:29:33 UTC (rev 177)
@@ -0,0 +1,47 @@
+// Copyright 2008-2009 severally by the contributors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package net.sf.practicalxml.perftest;
+
+import java.util.Random;
+
+
+/**
+ * Contains utility methods useful for performance testing.
+ */
+public class AbstractPerformanceTest
+{
+ /**
+ * Creates a fixed-length string containing characters from a contiguous
+ * range of values.
+ *
+ * @param size The size of the string.
+ * @param base The lowest character value for string contents. To
+ * create strings containing any ASCII printable, pass
+ * ' '; to create strings containing uppercase values,
+ * pass 'A'.
+ * @param range The number of contiguous characters for the strings.
+ * To create strings containing any ASCII printable,
+ * pass 96; to reate strings containing alphas, pass
+ * 26.
+ */
+ protected static String randomString(int size, char base, int range)
+ {
+ Random rnd = new Random();
+
+ StringBuilder buf = new StringBuilder(size);
+ for (int ii = 0 ; ii < size ; ii++)
+ buf.append((char)(base + rnd.nextInt(range)));
+ return buf.toString();
+ }
+}
Copied: branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/converter/BeanExerciser.java (from rev 176, branches/dev-1.1/src/example/java/net/sf/practicalxml/perftest/converter/BeanExerciser.java)
===================================================================
--- branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/converter/BeanExerciser.java (rev 0)
+++ branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/converter/BeanExerciser.java 2009-10-28 18:29:33 UTC (rev 177)
@@ -0,0 +1,145 @@
+// Copyright 2008-2009 severally by the contributors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package net.sf.practicalxml.perftest.converter;
+
+import org.w3c.dom.Document;
+
+import net.sf.practicalxml.converter.BeanConverter;
+import net.sf.practicalxml.converter.bean.Bean2XmlOptions;
+import net.sf.practicalxml.converter.bean.Xml2BeanOptions;
+import net.sf.practicalxml.perftest.AbstractPerformanceTest;
+
+
+/**
+ * Excercises {@link net.sf.practicalxml.converter.BeanConverter} by building
+ * a shallow-but-wide XML documents with string data, and doing lots of out-
+ * and-back conversions.
+ */
+public class BeanExerciser
+extends AbstractPerformanceTest
+{
+ private final static int REPS = 10000;
+ private final static int VALUE_SIZE = 100;
+
+
+ public static void main(String[] argv)
+ throws Exception
+ {
+ // move this inside the loop to get a sense of real-world relative
+ // performance -- will take a significant percentage of overall time
+ MyDataClass src = MyDataClass.newInstance();
+
+ long start = System.currentTimeMillis();
+ for (int ii = 0 ; ii < REPS ; ii++)
+ {
+ Document dom = BeanConverter.convertToXml(src, "foo", Bean2XmlOptions.CACHE_INTROSPECTIONS);
+ MyDataClass dst = BeanConverter.convertToJava(dom, MyDataClass.class, Xml2BeanOptions.CACHE_INTROSPECTIONS);
+ }
+ long finish = System.currentTimeMillis();
+
+ System.out.println("time for " + REPS + ": " + (finish - start) + " ms");
+ }
+
+
+ /**
+ * A bean-style class containing lots of fields.
+ */
+ public static class MyDataClass
+ {
+ private String _str01;
+ private String _str02;
+ private String _str03;
+ private String _str04;
+ private String _str05;
+ private String _str06;
+ private String _str08;
+ private String _str09;
+ private String _str10;
+ private String _str11;
+ private String _str12;
+ private String _str13;
+ private String _str14;
+ private String _str15;
+ private String _str16;
+ private String _str17;
+ private String _str18;
+ private String _str19;
+ private String _str20;
+
+ public String getStr01() { return _str01; }
+ public String getStr02() { return _str02; }
+ public String getStr03() { return _str03; }
+ public String getStr04() { return _str04; }
+ public String getStr05() { return _str05; }
+ public String getStr06() { return _str06; }
+ public String getStr08() { return _str08; }
+ public String getStr09() { return _str09; }
+ public String getStr10() { return _str10; }
+ public String getStr11() { return _str11; }
+ public String getStr12() { return _str12; }
+ public String getStr13() { return _str13; }
+ public String getStr14() { return _str14; }
+ public String getStr15() { return _str15; }
+ public String getStr16() { return _str16; }
+ public String getStr17() { return _str17; }
+ public String getStr18() { return _str18; }
+ public String getStr19() { return _str19; }
+ public String getStr20() { return _str20; }
+
+ public void setStr01(String val) { _str01 = val; }
+ public void setStr02(String val) { _str02 = val; }
+ public void setStr03(String val) { _str03 = val; }
+ public void setStr04(String val) { _str04 = val; }
+ public void setStr05(String val) { _str05 = val; }
+ public void setStr06(String val) { _str06 = val; }
+ public void setStr08(String val) { _str08 = val; }
+ public void setStr09(String val) { _str09 = val; }
+ public void setStr10(String val) { _str10 = val; }
+ public void setStr11(String val) { _str11 = val; }
+ public void setStr12(String val) { _str12 = val; }
+ public void setStr13(String val) { _str13 = val; }
+ public void setStr14(String val) { _str14 = val; }
+ public void setStr15(String val) { _str15 = val; }
+ public void setStr16(String val) { _str16 = val; }
+ public void setStr17(String val) { _str17 = val; }
+ public void setStr18(String val) { _str18 = val; }
+ public void setStr19(String val) { _str19 = val; }
+ public void setStr20(String val) { _str20 = val; }
+
+ public static MyDataClass newInstance()
+ {
+ MyDataClass result = new MyDataClass();
+ result.setStr01(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr02(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr03(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr04(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr05(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr06(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr08(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr09(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr10(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr11(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr12(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr13(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr14(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr15(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr16(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr17(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr18(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr19(randomString(VALUE_SIZE, ' ', 96));
+ result.setStr20(randomString(VALUE_SIZE, ' ', 96));
+ return result;
+ }
+ }
+}
Copied: branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/converter/JsonExerciser.java (from rev 176, branches/dev-1.1/src/example/java/net/sf/practicalxml/perftest/converter/JsonExerciser.java)
===================================================================
--- branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/converter/JsonExerciser.java (rev 0)
+++ branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/converter/JsonExerciser.java 2009-10-28 18:29:33 UTC (rev 177)
@@ -0,0 +1,69 @@
+// Copyright 2008-2009 severally by the contributors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package net.sf.practicalxml.perftest.converter;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import net.sf.practicalxml.DomUtil;
+import net.sf.practicalxml.converter.JsonConverter;
+import net.sf.practicalxml.perftest.AbstractPerformanceTest;
+
+
+/**
+ * Excercises {@link net.sf.practicalxml.converter.JsonConverter} by building
+ * a shallow-but-wide XML documents with string data, and doing lots of out-
+ * and-back conversions.
+ */
+public class JsonExerciser
+extends AbstractPerformanceTest
+{
+ private final static int REPS = 10000;
+ private final static int NUM_ELEMENTS = 20;
+ private final static int KEY_SIZE = 10;
+ private final static int VALUE_SIZE = 100;
+
+
+ public static void main(String[] argv)
+ throws Exception
+ {
+ // move this inside the loop to get a sense of real-world relative
+ // performance -- will take a significant percentage of overall time
+ Document src = createDoc();
+
+ long start = System.currentTimeMillis();
+ for (int ii = 0 ; ii < REPS ; ii++)
+ {
+ String json = JsonConverter.convertToJson(src);
+ Document dst = JsonConverter.convertToXml(json, "foo");
+ }
+ long finish = System.currentTimeMillis();
+
+ System.out.println("time for " + REPS + ": " + (finish - start) + " ms");
+ }
+
+
+ private static Document createDoc()
+ {
+ Element root = DomUtil.newDocument("foo");
+ for (int ii = 0 ; ii < NUM_ELEMENTS ; ii++)
+ {
+ String name = randomString(KEY_SIZE, 'a', 26);
+ String value = randomString(VALUE_SIZE, ' ', 96);
+ Element elem = DomUtil.appendChild(root, name);
+ elem.setTextContent(value);
+ }
+ return root.getOwnerDocument();
+ }
+}
Copied: branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/package.html (from rev 176, branches/dev-1.1/src/example/java/net/sf/practicalxml/perftest/package.html)
===================================================================
--- branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/package.html (rev 0)
+++ branches/dev-1.1/src/perftest/java/net/sf/practicalxml/perftest/package.html 2009-10-28 18:29:33 UTC (rev 177)
@@ -0,0 +1,9 @@
+<html>
+<body>
+
+ This package contains programs meant to exercise portions of the library,
+ for use with a profiler. Generally they work by constructing documents
+ with lots of random string data.
+
+</body>
+</html>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|