You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2015/03/12 13:58:29 UTC

svn commit: r1666172 - /uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDesPerformance.java

Author: schor
Date: Thu Mar 12 12:58:29 2015
New Revision: 1666172

URL: http://svn.apache.org/r1666172
Log:
[UIMA-4283] add a performance test driver to test cases - it's disabled but can be enabled when tuning measurements are wanted, by providing a directory somewhere of CASs to deserialize.

Added:
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDesPerformance.java

Added: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDesPerformance.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDesPerformance.java?rev=1666172&view=auto
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDesPerformance.java (added)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDesPerformance.java Thu Mar 12 12:58:29 2015
@@ -0,0 +1,60 @@
+package org.apache.uima.cas.impl;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.uima.UIMAFramework;
+import org.apache.uima.cas.CAS;
+import org.apache.uima.resource.metadata.TypeSystemDescription;
+import org.apache.uima.util.CasCreationUtils;
+import org.apache.uima.util.XMLInputSource;
+
+import junit.framework.TestCase;
+
+public class BinaryCasSerDesPerformance extends TestCase {
+
+  // Note: This test case requires an input directory that has
+  //   1) a file typesystem.xml which has the type system for the serialized files
+  //   2) a bunch of files having compressed serialized CASes
+  //   Set the directory in the 2nd line below
+  public void testBinaryCasDeserialization6Performance() throws Exception {
+    
+    File dir = new File("" /*"/au/t/data/bin-compr-6/shakespeare.txt_40_processed"*/);
+    
+    if (!dir.exists()) return;
+    
+    File typeSystemFile = new File(dir, "typesystem.xml");
+    XMLInputSource in = new XMLInputSource(typeSystemFile);
+    TypeSystemDescription typeSystemDescription = UIMAFramework.getXMLParser().parseTypeSystemDescription(in);
+    CAS cas = CasCreationUtils.createCas(typeSystemDescription, null, null);
+    
+    long accumDeser = 0;
+    long accumSer = 0;
+    for (int i = 0; i <10; i++) {
+    for (final File f : dir.listFiles()) {
+      if (f.getName().equals("typesystem.xml")) {
+        continue;
+      }
+      InputStream inputStream = new BufferedInputStream(new FileInputStream(f));
+      cas.reset();
+      long ist = System.nanoTime();
+      Serialization.deserializeCAS(cas, inputStream);
+      accumDeser += System.nanoTime() - ist;  
+      
+      ByteArrayOutputStream baos = new ByteArrayOutputStream(1024*512);
+      ist = System.nanoTime();
+      Serialization.serializeWithCompression(cas, baos, cas.getTypeSystem());
+      accumSer += System.nanoTime() - ist;
+//      System.out.format("Time to deserialize was %,d milliseconds, size = %d%n", 
+//          (System.nanoTime() - ist) / 1000000L, ((CASImpl)cas).getHeap().getHeapSize());
+    }
+    }
+    System.out.format("Time to deserialize all files was %,d milliseconds%n", accumDeser / 1000000); // (System.nanoTime() - startTime) / 1000000L);
+    System.out.format("Time to serialize   all files was %,d milliseconds%n", accumSer / 1000000);
+  }
+
+}