# HG changeset patch # User one # Date 1419403712 -32400 # Node ID 917ecf2c735068528aea03082328d487b4acc04e # Parent eed6235830c95399da3680e1e4e91eceb5267c42 function Measurement diff -r eed6235830c9 -r 917ecf2c7350 .classpath --- a/.classpath Mon Dec 08 19:11:19 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ - - - - - - - - - - - diff -r eed6235830c9 -r 917ecf2c7350 pom.xml --- a/pom.xml Mon Dec 08 19:11:19 2014 +0900 +++ b/pom.xml Wed Dec 24 15:48:32 2014 +0900 @@ -23,7 +23,7 @@ org.functionaljava functionaljava - 4.1 + 4.2-beta-1 diff -r eed6235830c9 -r 917ecf2c7350 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/oldTree/UpdateXml.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/oldTree/UpdateXml.java Mon Dec 08 19:11:19 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.tatsuki.oldTree; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; - -import org.xml.sax.SAXException; - -import ac.jp.u_ryukyu.cr.ie.tatsuki.xmlReader.UpdateXmlHundler; - -public class UpdateXml { - public static void main(String args[]) throws ParserConfigurationException, SAXException, IOException { - for (String xml : args) { - SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); - SAXParser saxParser = saxParserFactory.newSAXParser(); - UpdateXmlHundler updateXmlHandler = new UpdateXmlHundler(xml); - saxParser.parse(new FileInputStream("/Users/e115731/workspace/JungleXmlReader/_xml/" + xml + ".xml"), - updateXmlHandler); - } - } -} diff -r eed6235830c9 -r 917ecf2c7350 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/FJTreeMapSetTime.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/FJTreeMapSetTime.java Mon Dec 08 19:11:19 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/FJTreeMapSetTime.java Wed Dec 24 15:48:32 2014 +0900 @@ -7,24 +7,37 @@ import java.io.PrintWriter; import fj.Ord; +import fj.data.Option; import fj.data.TreeMap; public class FJTreeMapSetTime { + public static void main(String args[]) throws IOException { - File file = new File("./time/newfj41"); - PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); + System.out.println("putaaa"); + File putFile = new File("./time/fjPut"); + PrintWriter putPw = new PrintWriter(new BufferedWriter(new FileWriter(putFile))); + File getFile = new File("./time/fjGet"); + PrintWriter getPw = new PrintWriter(new BufferedWriter(new FileWriter(getFile))); TreeMap map = TreeMap.empty(Ord.intOrd); long t1 = 0; long t2 = 0; + long t3 = 0; + long t4 = 0; for (int count = 0; count <= 30000; count++) { t1 = System.currentTimeMillis(); map = map.set(count, count); t2 = System.currentTimeMillis(); if (count % 100 == 0) { System.out.println("put time " + count + " " + (t2 - t1)); - pw.println(count + " " + (t2 - t1)); + t3 = System.currentTimeMillis(); + Option op = map.get(count); + t4 = System.currentTimeMillis(); + System.out.println("get time " + count + " " + (t4 - t3)); + putPw.println(count + " " + (t2 - t1)); + getPw.println(count + " " + (t4 - t3)); } } - pw.close(); + putPw.close(); + getPw.close(); } } diff -r eed6235830c9 -r 917ecf2c7350 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/FunctionThread.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/FunctionThread.java Mon Dec 08 19:11:19 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.tatsuki.xml; - -import java.util.Iterator; -import java.util.Random; - -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; - -public class FunctionThread extends Thread { - - JungleTree tree; - int findCount; - boolean loop = true; - - public FunctionThread(JungleTree tree) { - this.tree = tree; - this.findCount = 0; - } - - public int getFindCount() { - return findCount; - } - - public void set(boolean loop) { - this.loop = loop; - } - - @Override - public void run() { - while (loop) { - - findCount++; - Random rnd = new Random(); - - String value = String.valueOf(rnd.nextInt(1000)); - InterfaceTraverser traverser = tree.getTraverser(true); - Iterator resultIterator = traverser.find( - (TreeNode node) -> { - String nodeValue = node.getAttributes() - .getString("KEY"); - if (nodeValue == null) - return false; - if (nodeValue.equals(value)) - return true; - return false; - }, "KEY", value); - - for (; resultIterator.hasNext();) { - resultIterator.next(); - } - - } - } -} diff -r eed6235830c9 -r 917ecf2c7350 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/ReadJungleThread.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/ReadJungleThread.java Wed Dec 24 15:48:32 2014 +0900 @@ -0,0 +1,54 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.xml; + +import java.util.Iterator; +import java.util.Random; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; + +public class ReadJungleThread extends Thread { + + JungleTree tree; + int findCount; + boolean loop = true; + + public ReadJungleThread(JungleTree tree) { + this.tree = tree; + this.findCount = 0; + } + + public int getFindCount() { + return findCount; + } + + public void set(boolean loop) { + this.loop = loop; + } + + @Override + public void run() { + while (loop) { + + findCount++; + Random rnd = new Random(); + + String value = String.valueOf(rnd.nextInt(1000)); + InterfaceTraverser traverser = tree.getTraverser(true); + Iterator resultIterator = traverser.find( + (TreeNode node) -> { + String nodeValue = node.getAttributes().getString("KEY"); + if (nodeValue == null) + return false; + if (nodeValue.equals(value)) + return true; + return false; + }, "KEY", value); + + for (; resultIterator.hasNext();) { + resultIterator.next(); + } + + } + } +} diff -r eed6235830c9 -r 917ecf2c7350 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementCreateIndex.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementCreateIndex.java Mon Dec 08 19:11:19 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementCreateIndex.java Wed Dec 24 15:48:32 2014 +0900 @@ -1,12 +1,9 @@ package jp.ac.u_ryukyu.ie.cr.tatsuki.xml; -import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; -import java.io.FileWriter; import java.io.IOException; -import java.io.PrintWriter; import java.nio.ByteBuffer; import java.util.Iterator; @@ -38,79 +35,73 @@ import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; public class TimeMeasurementCreateIndex { - private static int personCount = 10; - - public static void main(String args[]) throws FileNotFoundException, - ParserConfigurationException, SAXException, IOException { - Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor( - new DefaultTraverser())); - // JungleTree readXmlTree = readXml("Person", jungle); - JungleTree orgTree = readXml("Organization", jungle); - JungleTree roleTree = readXml("Role", jungle); + public static void main(String args[]) throws FileNotFoundException, ParserConfigurationException, SAXException, + IOException { + + int maxPersonCount = Integer.parseInt(args[0]); + Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser())); + JungleTree orgTree = readXml("Organization", jungle); + JungleTree roleTree = readXml("Role", jungle); - File file = new File("./time/createParentIndexUntil"); - file.delete(); + File file = new File("./time/createParentIndexUntil"); + file.delete(); - for (; personCount <= 300;) { - JungleTree tree = createJungleTree("Tree"); - JungleTreeEditor editor = tree.getTreeEditor(); - NodePath path = new DefaultNodePath(); - editor = editor.addNewChildAt(path, 0).b(); - editor = editor.putAttribute(path.add(0), "element", - ByteBuffer.wrap("Persons".getBytes())).b(); + for (int personCount = 0; personCount <= maxPersonCount;) { + JungleTree tree = createJungleTree("Tree"); + JungleTreeEditor editor = tree.getTreeEditor(); + NodePath path = new DefaultNodePath(); + editor = editor.addNewChildAt(path, 0).b(); + editor = editor.putAttribute(path.add(0), "element", ByteBuffer.wrap("Persons".getBytes())).b(); - for (int count = 0; count < personCount; count++) { - editor = extendXmlTree.extendsTree(editor, orgTree, roleTree, - count); - } - editor.success(); - personCount = personCount + 10; - } + for (int count = 0; count < personCount; count++) { + editor = extendXmlTree.extendsTree(editor, orgTree, roleTree, count); + } + editor.success(); + personCount = personCount + 10; + System.out.println("personCount" + personCount); } + } - private static JungleTree createJungleTree(String name) { - ChangeList list = new ChangeList() { - @Override - public Iterator iterator() { - List nil = List.nil(); - return nil.iterator(); - } + private static JungleTree createJungleTree(String name) { + ChangeList list = new ChangeList() { + @Override + public Iterator iterator() { + List nil = List.nil(); + return nil.iterator(); + } - @Override - public String uuid() { - return "hoge"; - } + @Override + public String uuid() { + return "hoge"; + } - @Override - public String getTreeName() { - return name; - } + @Override + public String getTreeName() { + return name; + } - }; + }; - DefaultTreeNode root = new DefaultTreeNode(); - Index index = new Index(); - ParentIndex parentIndex = new ParentIndex(); - ChangeSet set = new DefaultChangeSet(root, null, list, "hoge", name, 0, - index.getIndex(), parentIndex.getParentIndex()); - DefaultTreeContext tc = new DefaultTreeContext(root, set); - JungleTree newTree = new DefaultJungleTree(tc, "hoge", - new NullJournal().getWriter(), new DefaultTreeEditor( - new DefaultTraverser())); - return newTree; - } + DefaultTreeNode root = new DefaultTreeNode(); + Index index = new Index(); + ParentIndex parentIndex = new ParentIndex(); + ChangeSet set = new DefaultChangeSet(root, null, list, "hoge", name, 0, index.getIndex(), + parentIndex.getParentIndex()); + DefaultTreeContext tc = new DefaultTreeContext(root, set); + JungleTree newTree = new DefaultJungleTree(tc, "hoge", new NullJournal().getWriter(), new DefaultTreeEditor( + new DefaultTraverser())); + return newTree; + } - private static JungleTree readXml(String xml, Jungle jungle) - throws ParserConfigurationException, SAXException, IOException, - FileNotFoundException { - SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); - SAXParser saxParser = saxParserFactory.newSAXParser(); - JungleTree tree = jungle.createNewTree(xml); - ReadXmlHandler readXmlHandler = new ReadXmlHandler(tree); - saxParser.parse(new FileInputStream( - "/Users/one/Documents/workspace/JungleXMLReader/xml/" + xml - + ".xml"), readXmlHandler); - return readXmlHandler.getTree(); - } + private static JungleTree readXml(String xml, Jungle jungle) throws ParserConfigurationException, SAXException, + IOException, FileNotFoundException { + SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); + SAXParser saxParser = saxParserFactory.newSAXParser(); + JungleTree tree = jungle.createNewTree(xml); + ReadXmlHandler readXmlHandler = new ReadXmlHandler(tree); + String currentPath = System.getProperty("user.dir"); + saxParser.parse(new FileInputStream(currentPath + "/xml/" + xml + ".xml"), readXmlHandler); + return readXmlHandler.getTree(); + } } diff -r eed6235830c9 -r 917ecf2c7350 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementJuGrixFunction.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementJuGrixFunction.java Mon Dec 08 19:11:19 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementJuGrixFunction.java Wed Dec 24 15:48:32 2014 +0900 @@ -1,7 +1,12 @@ package jp.ac.u_ryukyu.ie.cr.tatsuki.xml; +import java.io.BufferedWriter; +import java.io.File; import java.io.FileNotFoundException; +import java.io.FileWriter; import java.io.IOException; +import java.io.PrintWriter; +import java.util.Iterator; import java.util.LinkedList; import java.util.Random; @@ -13,89 +18,236 @@ public class TimeMeasurementJuGrixFunction { - static int roopCount = 10; - static boolean useIndex = true; - static int personCount = 300; + static int roopCount = 10; + static boolean useIndex = true; + static LinkedList functionTimeLinkedList = new LinkedList(); + static int maxPersonCount = 1000; + + public static void main(String args[]) throws FileNotFoundException, ParserConfigurationException, SAXException, + IOException { + + System.out.println("start : "); + + String orgId = "o:2"; + String personId = "p:1"; + LinkedList filterIds = new LinkedList(); + // filterIds.add("r:5"); + long t2; + long t1; + + for (int personCount = 100; maxPersonCount >= personCount;) { + + JuGrix jugrix = extendXmlTree.createJuGrix(useIndex, personCount); + Random random = new Random(); - public static void main(String args[]) throws FileNotFoundException, - ParserConfigurationException, SAXException, IOException { + functions(jugrix, orgId, personId, filterIds); + + functionTimeLinkedList = new LinkedList(); + long sumTime = 0; + for (int count = 0; count < roopCount; count++) { - System.out.println("start : "); + int ran = random.nextInt(28); + orgId = "o:" + String.valueOf(ran + 1); + ran = random.nextInt(30); + personId = "p:" + String.valueOf(ran + 1); + t1 = System.currentTimeMillis(); + functions(jugrix, orgId, personId, filterIds); + t2 = System.currentTimeMillis(); + sumTime = (t2 - t1) + sumTime; + System.out.println(count + "回目=" + (t2 - t1) + "s"); + } + + getFunctionTimes(personCount); + + System.out.println("平均 = " + (sumTime / 10) + "s"); + personCount = personCount + 100; + } + System.out.println("end"); + } - String orgId = "o:2"; - String personId = "p:1"; - LinkedList filterIds = new LinkedList(); - filterIds.add("r:5"); - long t2; - long t1; - JuGrix jugrix = extendXmlTree.createJuGrix(useIndex, personCount); - Random random = new Random(); + private static void getFunctionTimes(int personCount) throws IOException { + + for (int i = 0; i < 15; i++) { + long time = 0; + for (int j = 0; j < 10; j++) { + long functionTime = functionTimeLinkedList.get(i + (j * 15)); + time = time + functionTime; + } + String functionName = ""; + switch (i) { + case 0: + functionName = "childOrganizationIds"; + break; + case 1: + functionName = "competentRoleId"; + break; + case 2: + functionName = "concurrentRoleIds"; + break; + case 3: + functionName = "deepChildOrganizationIds"; + break; + case 4: + functionName = "deepChildOrganizationIdsPlus"; + break; + case 5: + functionName = "deepParentOrganizationIds"; + break; + case 6: + functionName = "deepParentOrganizationIdsPlus"; + break; + case 7: + functionName = "deepPersonIds"; + break; + case 8: + functionName = "isActive"; + break; + case 9: + functionName = "parentOrganizationIds"; + break; + case 10: + functionName = "personIds"; + break; + case 11: + functionName = "roleDescriptionElementIds"; + break; + case 12: + functionName = "roleIds"; + break; + case 13: + functionName = "rolePriority"; + break; + case 14: + functionName = "stringPathToId"; + break; + } + File file = new File("./time/function/" + functionName); + PrintWriter pw = new PrintWriter(new BufferedWriter(new + FileWriter(file, + true))); + pw.println(personCount + " " + (time / 10)); + pw.close(); + System.out.println(functionName + " AVERAGE = " + (time / 10)); + } + } - functions(jugrix, orgId, personId, filterIds); - - long sumTime = 0; - for (int count = 0; count < roopCount; count++) { + private static void functions(JuGrix jugrix, String orgId, String personId, LinkedList filterIds) { - int ran = random.nextInt(30); - orgId = "o:" + String.valueOf(ran); - personId = "p:" + String.valueOf(ran); - t1 = System.currentTimeMillis(); - functions(jugrix, orgId, personId, filterIds); - t2 = System.currentTimeMillis(); - sumTime = (t2 - t1) + sumTime; - System.out.println(count + "回目=" + sumTime + "s"); - } - System.out.println("平均 = " + (sumTime / 10) + "s"); - System.out.println("end"); + long t1 = System.currentTimeMillis(); + Iterator tmp = jugrix.childOrganizationIds(orgId, filterIds, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); } - private static void functions(JuGrix jugrix, String orgId, String personId, - LinkedList filterIds) { - long t1 = System.currentTimeMillis(); - jugrix.childOrganizationIds(orgId, filterIds); - long t2 = System.currentTimeMillis(); - // System.out.println("childOrganizationIds = " + (t2-t1)); - jugrix.competentRoleId(personId); - long t3 = System.currentTimeMillis(); - // System.out.println("competentRoleId = " +(t3-t2)); - jugrix.concurrentRoleIds(personId); - long t4 = System.currentTimeMillis(); - // System.out.println("concurrentRoleIds = "+(t4-t3)); - jugrix.deepChildOrganizationIds(orgId, filterIds); - long t5 = System.currentTimeMillis(); - // System.out.println("deepChildOrganizationIds = "+(t5-t4)); - jugrix.deepChildOrganizationIdsPlus(orgId, filterIds); - long t6 = System.currentTimeMillis(); - // System.out.println("deepChildOrganizationIdsPlus = "+(t6-t5)); - jugrix.deepParentOrganizationIds(orgId, filterIds); - long t7 = System.currentTimeMillis(); - // System.out.println("deepParentOrganizationIds = "+(t7-t6)); - jugrix.deepParentOrganizationIdsPlus(orgId, filterIds); - long t8 = System.currentTimeMillis(); - // System.out.println("deepParentOrganizationIdsPlus = "+(t8-t7)); - jugrix.deepPersonIds(orgId, filterIds); - long t9 = System.currentTimeMillis(); - // System.out.println("deepPersonIds = "+(t9-t8)); - jugrix.isActive(personId); - long t10 = System.currentTimeMillis(); - // System.out.println("isActive = "+(t10-t9)); - jugrix.parentOrganizationIds(orgId, filterIds); - long t11 = System.currentTimeMillis(); - // System.out.println("parentOrganizationIds = "+(t11-t10)); - jugrix.personIds(orgId, filterIds); - long t12 = System.currentTimeMillis(); - // System.out.println("personIds = "+(t12-t11)); - jugrix.roleDescriptionElementIds(orgId, filterIds); - long t13 = System.currentTimeMillis(); - // System.out.println("roleDescriptionElementIds = "+(t13-t12)); - jugrix.roleIds(orgId, filterIds); - long t14 = System.currentTimeMillis(); - // System.out.println("roleIds = "+(t14-t13)); - jugrix.rolePriority(personId, "r:34"); - long t15 = System.currentTimeMillis(); - // System.out.println("rolePriority = "+(t15-t14)); - jugrix.stringPathToId("r:path:エスアールエルテクノシステム/臨検システム部/業務システムグループ"); - long t16 = System.currentTimeMillis(); - // System.out.println("stringPathToId = "+(t16-t15)); + long t2 = System.currentTimeMillis(); + tmp = jugrix.competentRoleId(personId, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); + } + long t3 = System.currentTimeMillis(); + tmp = jugrix.concurrentRoleIds(personId, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); + } + + long t4 = System.currentTimeMillis(); + tmp = jugrix.deepChildOrganizationIds(orgId, filterIds, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); + } + + long t5 = System.currentTimeMillis(); + tmp = jugrix.deepChildOrganizationIdsPlus(orgId, filterIds, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); + } + + long t6 = System.currentTimeMillis(); + tmp = jugrix.deepParentOrganizationIds(orgId, filterIds, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); + } + + long t7 = System.currentTimeMillis(); + tmp = jugrix.deepParentOrganizationIdsPlus(orgId, filterIds, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); + } + + long t8 = System.currentTimeMillis(); + tmp = jugrix.deepPersonIds(orgId, filterIds, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); + } + + long t9 = System.currentTimeMillis(); + jugrix.isActive(personId, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); + } + + long t10 = System.currentTimeMillis(); + tmp = jugrix.parentOrganizationIds(orgId, filterIds, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); } + + long t11 = System.currentTimeMillis(); + tmp = jugrix.personIds(orgId, filterIds, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); + } + + long t12 = System.currentTimeMillis(); + tmp = jugrix.roleDescriptionElementIds(orgId, filterIds, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); + } + + long t13 = System.currentTimeMillis(); + tmp = jugrix.roleIds(orgId, filterIds, "v:1"); + for (; tmp.hasNext();) { + tmp.next(); + } + + long t14 = System.currentTimeMillis(); + jugrix.rolePriority(personId, "r:34", "v:1"); + long t15 = System.currentTimeMillis(); + jugrix.stringPathToId("r:path:エスアールエルテクノシステム/臨検システム部/業務システムグループ", "v:1"); + + long t16 = System.currentTimeMillis(); + functionTimeLinkedList.add(t2 - t1); + functionTimeLinkedList.add(t3 - t2); + functionTimeLinkedList.add(t4 - t3); + functionTimeLinkedList.add(t5 - t4); + functionTimeLinkedList.add(t6 - t5); + functionTimeLinkedList.add(t7 - t6); + functionTimeLinkedList.add(t8 - t7); + functionTimeLinkedList.add(t9 - t8); + functionTimeLinkedList.add(t10 - t9); + functionTimeLinkedList.add(t11 - t10); + functionTimeLinkedList.add(t12 - t11); +// long aaa = (t12 - t11); +// if (aaa > 500) { +// System.out.println("aaaa---------------------------------------"); +// long t17 = System.currentTimeMillis(); +// Iterator tmp = jugrix.personIds(orgId, filterIds, "v:1"); +// tmp.hasNext(); +// long t18 = System.currentTimeMillis(); +// System.out.println("all = " + (t18 - t17)); +// long t19 = System.currentTimeMillis(); +// tmp.hasNext(); +// long t20 = System.currentTimeMillis(); +// System.out.println("has next only = " + (t20 - t19)); +// if ((t20 - t17) > 100) { +// System.out.println("aaaa---------------------------------------"); +// System.out.println(tmp.next()); +// System.out.println("aaaa---------------------------------------"); +// } +// } + functionTimeLinkedList.add(t13 - t12); + functionTimeLinkedList.add(t14 - t13); + functionTimeLinkedList.add(t15 - t14); + functionTimeLinkedList.add(t16 - t15); + } } diff -r eed6235830c9 -r 917ecf2c7350 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurement.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurement.java Mon Dec 08 19:11:19 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurement.java Wed Dec 24 15:48:32 2014 +0900 @@ -1,5 +1,10 @@ package jp.ac.u_ryukyu.ie.cr.tatsuki.xml; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; import java.nio.ByteBuffer; import java.util.Random; @@ -14,65 +19,108 @@ public class TransactionPerSecondMeasurement { - public static void main(String[] args) throws InterruptedException { + public static void main(String[] args) throws InterruptedException, IOException { + Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser())); + JungleTree tree = jungle.createNewTree("testTree"); + JungleTreeEditor editor = tree.getTreeEditor(); + editor = createTree(0, new DefaultNodePath(), editor); + System.out.println("endCreateTree"); + editor = editor.success().b(); + System.out.println(Runtime.getRuntime().availableProcessors()); - Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor( - new DefaultTraverser())); - JungleTree tree = jungle.createNewTree("testTree"); - JungleTreeEditor editor = tree.getTreeEditor(); - editor = createTree(0, new DefaultNodePath(), editor); - editor = editor.success().b(); + if (args.length > 0) { + if (args[0].equals("read")) + readOnly(tree); + if (args[0].equals("write")) + readAndWrite(tree); + } else + System.out.println("Please with the argument"); + } - for (int THREAD_COUNT = 1; THREAD_COUNT < 12; THREAD_COUNT++) { - FunctionThread thread[]; - thread = new FunctionThread[THREAD_COUNT]; - for (int count = 0; THREAD_COUNT > count; count++) { - thread[count] = new FunctionThread(tree); - } + private static void readAndWrite(JungleTree tree) throws InterruptedException, IOException { + System.out.println("read and write"); + File file = new File("./time/readAndWrite"); + PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); + for (int THREAD_COUNT = 1; THREAD_COUNT <= 12; THREAD_COUNT++) { + ReadJungleThread readThread[] = new ReadJungleThread[THREAD_COUNT]; + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count] = new ReadJungleThread(tree); + } - System.out.println("StartThread"); - for (int count = 0; THREAD_COUNT > count; count++) { - thread[count].start(); - } + WriteJungleThread writeThread = new WriteJungleThread(tree); + writeThread.start(); + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count].start(); + } + + System.out.println("StartThread"); + + Thread.sleep(10000); + writeThread.set(false); + int readCount = 0; + + for (int count = 0; THREAD_COUNT > count; count++) { + readCount = readCount + readThread[count].getFindCount(); + readThread[count].set(false); + System.out.println(readThread[count].getFindCount()); + } + - for (int count = 0; count < 4; count++) { - Thread.sleep(2500); - // editor = editor.putAttribute(new DefaultNodePath(), key, - // ByteBuffer.wrap("2".getBytes())).b(); - // editor = editor.success().b(); - } - int readCount = 0; - for (int count = 0; THREAD_COUNT > count; count++) { - readCount = readCount + thread[count].getFindCount(); - thread[count].set(false); - System.out.println(thread[count].getFindCount()); - } + pw.println(THREAD_COUNT + " " + readCount); + System.out.println(THREAD_COUNT + "readCount = " + readCount); + Thread.sleep(1000); + } + pw.close(); + } - System.out.println(THREAD_COUNT + "readCount = " + readCount); - } - System.out.println("end"); - } + private static void readOnly(JungleTree tree) throws InterruptedException, IOException { + System.out.println("read only"); + File file = new File("./time/readOnly"); + PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); + for (int THREAD_COUNT = 1; THREAD_COUNT <= 12; THREAD_COUNT++) { + ReadJungleThread readThread[] = new ReadJungleThread[THREAD_COUNT]; + ; + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count] = new ReadJungleThread(tree); + } - static String key = "KEY"; + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count].start(); + } + + System.out.println("StartThread"); + + Thread.sleep(10000); + int readCount = 0; - public static JungleTreeEditor createTree(int deep, NodePath path, - JungleTreeEditor editor) { + for (int count = 0; THREAD_COUNT > count; count++) { + readCount = readCount + readThread[count].getFindCount(); + readThread[count].set(false); + System.out.println(readThread[count].getFindCount()); + } + pw.println(THREAD_COUNT + " " + readCount); + System.out.println(THREAD_COUNT + "readCount = " + readCount); + } + pw.close(); + } + + static String key = "KEY"; + + public static JungleTreeEditor createTree(int deep, NodePath path, JungleTreeEditor editor) { - Random rnd = new Random(); - String value1 = String.valueOf(rnd.nextInt(1000)); - String value2 = String.valueOf(rnd.nextInt(1000)); - editor = editor.addNewChildAt(path, 0).b(); - editor = editor.putAttribute(path.add(0), key, - ByteBuffer.wrap(value1.getBytes())).b(); - editor = editor.addNewChildAt(path, 1).b(); - editor = editor.putAttribute(path.add(0), key, - ByteBuffer.wrap(value2.toString().getBytes())).b(); - deep++; + Random rnd = new Random(); + String value1 = String.valueOf(rnd.nextInt(1000)); + String value2 = String.valueOf(rnd.nextInt(1000)); + editor = editor.addNewChildAt(path, 0).b(); + editor = editor.putAttribute(path.add(0), key, ByteBuffer.wrap(value1.getBytes())).b(); + editor = editor.addNewChildAt(path, 1).b(); + editor = editor.putAttribute(path.add(0), key, ByteBuffer.wrap(value2.toString().getBytes())).b(); + deep++; - if (deep < 10) { - editor = createTree(deep, path.add(0), editor); - editor = createTree(deep, path.add(1), editor); - } - return editor; + if (deep < 10) { + editor = createTree(deep, path.add(0), editor); + editor = createTree(deep, path.add(1), editor); } + return editor; + } } diff -r eed6235830c9 -r 917ecf2c7350 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/UntilTreeMapPutTime.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/UntilTreeMapPutTime.java Mon Dec 08 19:11:19 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/UntilTreeMapPutTime.java Wed Dec 24 15:48:32 2014 +0900 @@ -7,7 +7,6 @@ import java.io.PrintWriter; import java.util.TreeMap; - public class UntilTreeMapPutTime { public static void main(String args[]) throws IOException { @@ -18,8 +17,14 @@ long t1 = System.currentTimeMillis(); map.put(count, count); long t2 = System.currentTimeMillis(); + int aaa = map.get(count); + long t3 = System.currentTimeMillis(); + if ((count % 100) == 0) { System.out.println("put time " + count + " " + (t2 - t1)); + System.out.println("get time " + count + " " + (t3 - t2)); + pw.println(count + " " + (t2 - t1)); + } } pw.close(); } diff -r eed6235830c9 -r 917ecf2c7350 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/WriteJungleThread.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/WriteJungleThread.java Wed Dec 24 15:48:32 2014 +0900 @@ -0,0 +1,39 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.xml; + +import java.nio.ByteBuffer; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; + +public class WriteJungleThread extends Thread { + + JungleTree tree; + JungleTreeEditor editor; + int writeCount; + boolean loop = true; + + public WriteJungleThread(JungleTree tree) { + this.tree = tree; + this.editor = tree.getTreeEditor(); + this.writeCount = 0; + } + + public void set(boolean loop) { + this.loop = loop; + } + + public int get() { + return writeCount; + } + + @Override + public void run() { + while (loop) { + editor = editor.putAttribute(new DefaultNodePath(), "KEY", ByteBuffer.wrap("2".getBytes())).b(); + editor = editor.success().b(); + writeCount++; + + } + } +} \ No newline at end of file diff -r eed6235830c9 -r 917ecf2c7350 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/extendXmlTree.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/extendXmlTree.java Mon Dec 08 19:11:19 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/extendXmlTree.java Wed Dec 24 15:48:32 2014 +0900 @@ -1,8 +1,12 @@ package jp.ac.u_ryukyu.ie.cr.tatsuki.xml; +import java.io.BufferedWriter; +import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.FileWriter; import java.io.IOException; +import java.io.PrintWriter; import java.nio.ByteBuffer; import java.util.Iterator; import java.util.Random; @@ -28,37 +32,57 @@ public class extendXmlTree { - private extendXmlTree() { + public static void main(String args[]) throws FileNotFoundException, ParserConfigurationException, SAXException, + IOException { + + if (args.length != 2) { + System.out.println("Arguments are two necessary , first person count, second use Index"); + return; + } + + int maxPersonCount = Integer.parseInt(args[0]); + + boolean useIndex = false; + if (args[1].equals("true")) + useIndex = true; + + for (int personCount = 10; personCount <= maxPersonCount; personCount = personCount + 10) { + createJuGrix(useIndex, personCount); + } } - - public static JuGrix createJuGrix(boolean useIndex,int personCount ) throws ParserConfigurationException, SAXException, - FileNotFoundException, IOException { + public static JuGrix createJuGrix(boolean useIndex, int personCount) throws ParserConfigurationException, + SAXException, FileNotFoundException, IOException { Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser())); JungleTree readXmlTree = jungle.createNewTree("Person"); - //JungleTree readXmlTree = readXml("Person", jungle); + // JungleTree readXmlTree = readXml("Person", jungle); JungleTree orgTree = readXml("Organization", jungle); JungleTree roleTree = readXml("Role", jungle); JungleTreeEditor editor = readXmlTree.getTreeEditor(); NodePath path = new DefaultNodePath(); editor = editor.addNewChildAt(path, 0).b(); editor = editor.putAttribute(path.add(0), "element", ByteBuffer.wrap("Persons".getBytes())).b(); - System.out.println("Create Tree-------------------------------"); + + long start = System.currentTimeMillis(); + for (int count = 0; count < personCount; ++count) { editor = extendsTree(editor, orgTree, roleTree, count); } + + long stop = System.currentTimeMillis(); + File file = new File("./time/createPersonTime"); + PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file,true))); + pw.println(personCount + " " + (stop - start)); + pw.close(); + System.out.println("create person time = " + (stop - start)); + System.out.println("person count = " + personCount); editor.success(); - - int PersonCount = readXmlTree.getRootNode().getChildren().at(0).b().getChildren().size(); - System.out.println("PersonCount = " + PersonCount); - System.out.println("end-------------------------------"); JuGrix jugrix = new JuGrix(useIndex, readXmlTree, orgTree, roleTree); return jugrix; } - public static JungleTreeEditor extendsTree(JungleTreeEditor editor, JungleTree orgTree, JungleTree roleTree, - int count) { + public static JungleTreeEditor extendsTree(JungleTreeEditor editor, JungleTree orgTree, JungleTree roleTree, int count) { Random rdm = new Random(); int orgNum = rdm.nextInt(30); String orgId = "o:" + String.valueOf(orgNum); @@ -239,8 +263,8 @@ SAXParser saxParser = saxParserFactory.newSAXParser(); JungleTree tree = jungle.createNewTree(xml); ReadXmlHandler readXmlHandler = new ReadXmlHandler(tree); - saxParser - .parse(new FileInputStream("/Users/one/Documents/workspace/JungleXMLReader/xml/" + xml + ".xml"), readXmlHandler); + String currentPath = System.getProperty("user.dir"); + saxParser.parse(new FileInputStream(currentPath + "/xml/" + xml + ".xml"), readXmlHandler); return readXmlHandler.getTree(); }