diff src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/JungleBenchMark.java @ 183:066d9c5758dc

change TreeContext
author tatsuki
date Mon, 23 Mar 2015 15:44:28 +0900
parents 67d4c68578cf
children 868a746996ad
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/JungleBenchMark.java	Fri Mar 20 15:35:53 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/JungleBenchMark.java	Mon Mar 23 15:44:28 2015 +0900
@@ -24,25 +24,42 @@
     public static void main(String[] args) throws InterruptedException, IOException, ParserConfigurationException, SAXException {
 
 
-        if (args.length == 0) {
-            System.out.println("args read or find");
+        if (args.length < 1) {
+            System.out.println("args[0] = read or find, args[1] = separate or nonSeparate");
             System.exit(0);
         }
 
-        Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()));
-        JungleTree tree = jungle.createNewTree("Person");
-        JungleTreeEditor editor = tree.getTreeEditor();
-        JungleTreeEditor newEditor = createTree(0,new DefaultNodePath(),editor);
-        if (newEditor.success().isA()) {
-            System.out.println("success faild");
-            System.exit(1);
-        }
-
         Runtime rt = Runtime.getRuntime();
         int cpuNum = rt.availableProcessors();
 
+        Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()));
+        JungleTree trees[] = new JungleTree[cpuNum];
 
-        File file = new File("./time/JungleTree" + args[0] + "Time");
+        if (args[1].equals("separate")){
+            for (int count = 0; count < cpuNum; count++) {
+                JungleTree tree = jungle.createNewTree("tree" + count);
+                JungleTreeEditor editor = tree.getTreeEditor();
+                editor = editor.putAttribute(new DefaultNodePath(), "key", ByteBuffer.wrap(String.valueOf(0).getBytes())).b();
+                JungleTreeEditor newEditor = createTree(0, new DefaultNodePath(), editor);
+                if (newEditor.success().isA()) {
+                    System.out.println("success faild");
+                    System.exit(1);
+                }
+                trees[count] = tree;
+            }
+        } else {
+            JungleTree tree = jungle.createNewTree("tree" );
+            JungleTreeEditor editor = tree.getTreeEditor();
+            editor = editor.putAttribute(new DefaultNodePath(), "key", ByteBuffer.wrap(String.valueOf(0).getBytes())).b();
+            JungleTreeEditor newEditor = createTree(0, new DefaultNodePath(), editor);
+            if (newEditor.success().isA()) {
+                System.out.println("success faild");
+                System.exit(1);
+            }
+            trees[0] = tree;
+        }
+
+        File file = new File("./time/" + args[1] + "JungleTree" + args[0] + "Time");
 
         PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));
 
@@ -50,13 +67,21 @@
 
         for (int THREAD_COUNT = 1; THREAD_COUNT <= cpuNum; THREAD_COUNT++) {
             readThread = new JungleBenchMarkThread[THREAD_COUNT];
-
+            JungleTree tree = null;
             if (args[0].equals("read")) {
                 for (int count = 0; THREAD_COUNT > count; count++) {
+                    if (args[1].equals("separate"))
+                        tree = trees[count];
+                    else
+                        tree = trees[0];
                     readThread[count] = new readTreeAttributeThread(tree);
                 }
             } else if (args[0].equals("find")) {
                 for (int count = 0; THREAD_COUNT > count; count++) {
+                    if (args[1].equals("separate"))
+                        tree = trees[count];
+                    else
+                        tree = trees[0];
                     readThread[count] = new findTreeAttributeThread(tree);
                 }
             } else {
@@ -76,26 +101,29 @@
             for (int count = 0; THREAD_COUNT > count; count++) {
                 readCount = readCount + readThread[count].getFindCount();
                 readThread[count].set(false);
+                readThread[count] = null;
             }
 
             pw.println(THREAD_COUNT + " " + readCount);
             System.out.println(THREAD_COUNT + "readCount = " + readCount);
+            System.gc();
+            System.out.println("-------------GC--------------");
+            Thread.sleep(1000);
         }
 
         pw.close();
     }
 
-    static Integer nodeNum = 0;
+    static Integer nodeNum = 1;
+
     public static JungleTreeEditor createTree(int deep, NodePath path, JungleTreeEditor editor) {
 
         Random rnd = new Random();
         String value1 = String.valueOf(nodeNum);
-        nodeNum ++;
+        nodeNum++;
         String value2 = String.valueOf(nodeNum);
-        nodeNum ++;
+        nodeNum++;
 
-        if (value1.equals("500"))
-            System.out.println("aaa");
         editor = editor.addNewChildAt(path, 0).b();
         editor = editor.putAttribute(path.add(0), "key", ByteBuffer.wrap(value1.getBytes())).b();
         editor = editor.addNewChildAt(path, 1).b();