From: <jen...@us...> - 2008-11-06 12:15:06
|
Revision: 1493 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1493&view=rev Author: jenslehmann Date: 2008-11-06 12:02:22 +0000 (Thu, 06 Nov 2008) Log Message: ----------- - completed new clone operation on EL description trees - added performance test for cloning trees Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java trunk/src/dl-learner/org/dllearner/test/junit/ELDescriptionTreeTests.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java 2008-11-05 12:51:43 UTC (rev 1492) +++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java 2008-11-06 12:02:22 UTC (rev 1493) @@ -62,7 +62,7 @@ protected TreeSet<NamedClass> label; - protected List<ELDescriptionEdge> edges; + protected List<ELDescriptionEdge> edges = new LinkedList<ELDescriptionEdge>(); protected int level; Modified: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java 2008-11-05 12:51:43 UTC (rev 1492) +++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java 2008-11-06 12:02:22 UTC (rev 1493) @@ -26,7 +26,6 @@ import java.util.Map; import java.util.NavigableSet; import java.util.Set; -import java.util.TreeMap; import java.util.TreeSet; import java.util.Map.Entry; @@ -338,8 +337,9 @@ node2.inSC2.remove(node1); } + @Override @SuppressWarnings("unchecked") - public ELDescriptionTree cloneNew() { + public ELDescriptionTree clone() { // clone "global" tree ELDescriptionTree treeClone = new ELDescriptionTree(rs); @@ -376,7 +376,32 @@ newRoot = newNode; } - // TODO: edges, simulation information ... + // simulation information + for(ELDescriptionNode node : oldNode.in) { + newNode.in.add(cloneMap.get(node)); + } + for(ELDescriptionNode node : oldNode.inSC1) { + newNode.inSC1.add(cloneMap.get(node)); + } + for(ELDescriptionNode node : oldNode.inSC2) { + newNode.inSC2.add(cloneMap.get(node)); + } + for(ELDescriptionNode node : oldNode.out) { + newNode.out.add(cloneMap.get(node)); + } + for(ELDescriptionNode node : oldNode.outSC1) { + newNode.outSC1.add(cloneMap.get(node)); + } + for(ELDescriptionNode node : oldNode.outSC2) { + newNode.outSC2.add(cloneMap.get(node)); + } + + // edges + for(ELDescriptionEdge edge : oldNode.edges) { + // create a new edge with same label and replace the node the edge points to + newNode.edges.add(new ELDescriptionEdge(edge.getLabel(), cloneMap.get(edge.getTree()))); + } + } // update global tree @@ -394,8 +419,7 @@ return treeClone; } - @Override - public ELDescriptionTree clone() { + public ELDescriptionTree cloneOld() { // create a new reference tree ELDescriptionTree treeClone = new ELDescriptionTree(rs); // create a root node attached to this reference tree Modified: trunk/src/dl-learner/org/dllearner/test/junit/ELDescriptionTreeTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/ELDescriptionTreeTests.java 2008-11-05 12:51:43 UTC (rev 1492) +++ trunk/src/dl-learner/org/dllearner/test/junit/ELDescriptionTreeTests.java 2008-11-06 12:02:22 UTC (rev 1493) @@ -36,6 +36,7 @@ import org.dllearner.parser.KBParser; import org.dllearner.parser.ParseException; import org.dllearner.test.junit.TestOntologies.TestOntology; +import org.dllearner.utilities.Helper; import org.dllearner.utilities.owl.ConceptTransformation; import org.junit.Test; @@ -83,7 +84,21 @@ Description d = KBParser.parseConcept("(male AND (human AND EXISTS hasChild.(female AND EXISTS hasChild.male)))"); ConceptTransformation.cleanConcept(d); ELDescriptionTree tree = new ELDescriptionTree(rs, d); - ELDescriptionTree treeCloned = tree.clone(); + // clone performance (false for simple unit test, true for clone performance test) + boolean testPerformance = false; + ELDescriptionTree treeCloned = null; + if(testPerformance) { + int runs = 1000000; + long startTime = System.nanoTime(); + for(int i=0; i<runs; i++) { + treeCloned = tree.clone(); + } + long runTime = System.nanoTime() - startTime; + System.out.println(Helper.prettyPrintNanoSeconds(runTime/runs, true, true) + " per clone operation"); + } else { + treeCloned = tree.clone(); + } + ELDescriptionTreeComparator comparator = new ELDescriptionTreeComparator(); assertTrue(comparator.compare(tree, treeCloned) == 0); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |