changeset 17:917ecf2c7350

function Measurement
author one
date Wed, 24 Dec 2014 15:48:32 +0900
parents eed6235830c9
children 190890be73e4
files .classpath pom.xml src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/oldTree/UpdateXml.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/FJTreeMapSetTime.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/FunctionThread.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/ReadJungleThread.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementCreateIndex.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementJuGrixFunction.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurement.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/UntilTreeMapPutTime.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/WriteJungleThread.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/extendXmlTree.java
diffstat 12 files changed, 541 insertions(+), 309 deletions(-) [+]
line wrap: on
line diff
--- a/.classpath	Mon Dec 08 19:11:19 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry including="**/*.java" kind="src" path="src/main/java"/>
-	<classpathentry kind="var" path="M2_REPO/org/functionaljava/functionaljava/4.1/functionaljava-4.1.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar"/>
-	<classpathentry kind="var" path="M2_REPO/junit/junit/4.7/junit-4.7.jar" sourcepath="M2_REPO/junit/junit/4.7/junit-4.7-sources.jar"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/jungle-core"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/JungleXMLReader"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java8u25"/>
-	<classpathentry kind="output" path="target/classes"/>
-</classpath>
--- 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 @@
 		<dependency>
 			<groupId>org.functionaljava</groupId>
 			<artifactId>functionaljava</artifactId>
-			<version>4.1</version>
+			<version>4.2-beta-1</version>
 		</dependency>
 
 		<dependency>
--- 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);
-    }
-  }
-}
--- 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<Integer, Integer> 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<Integer> 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();
   }
 }
--- 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<TreeNode> 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();
-            }
-
-        }
-    }
-}
--- /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<TreeNode> 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();
+            }
+
+        }
+    }
+}
--- 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<TreeOperation> iterator() {
-                List<TreeOperation> nil = List.nil();
-                return nil.iterator();
-            }
+  private static JungleTree createJungleTree(String name) {
+    ChangeList list = new ChangeList() {
+      @Override
+      public Iterator<TreeOperation> iterator() {
+        List<TreeOperation> 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();
+  }
 }
--- 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<Long> functionTimeLinkedList = new LinkedList<Long>();
+  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<String> filterIds = new LinkedList<String>();
+    // 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>();
+      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<String> filterIds = new LinkedList<String>();
-        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<String> 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<String> tmp = jugrix.childOrganizationIds(orgId, filterIds, "v:1");
+    for (; tmp.hasNext();) {
+      tmp.next();
     }
 
-    private static void functions(JuGrix jugrix, String orgId, String personId,
-            LinkedList<String> 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<String> 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);
+  }
 }
--- 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;
+  }
 }
--- 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();
   }
--- /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
--- 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();
   }