changeset 189:31d9158356de

add JungleWriteThread to JungleBenchMark
author tatsuki
date Sat, 18 Apr 2015 20:13:12 +0900
parents 868a746996ad
children a01507a9f826
files src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/FJTreeMapGetIteratorThread.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/JungleBenchMark.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/JungleWriteThread.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/TatsukiTreeMapGetThread.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/TreeMapBenchMark.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/UtilTreeMapGetThread.java
diffstat 6 files changed, 175 insertions(+), 97 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/FJTreeMapGetIteratorThread.java	Fri Apr 17 22:12:44 2015 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.test;
-
-import jp.ac.u_ryukyu.ie.cr.tatsuki.TreeMap.TreeMap;
-
-import java.util.Iterator;
-import java.util.Optional;
-
-
-/**
- * Created by e115731 on 15/03/17.
- */
-public class FJTreeMapGetIteratorThread extends AbstractTreeMapThread {
-    TreeMap<String, String> map;
-    private long findCount;
-    boolean loop = true;
-
-    public FJTreeMapGetIteratorThread(TreeMap map) {
-        this.map = map;
-    }
-
-    @Override
-    public long getFindCount() {
-        System.out.println("thread count = " + findCount);
-        return findCount;
-    }
-
-    @Override
-    public void set(boolean loop) {
-        this.loop = loop;
-    }
-
-    @Override
-    public void run() {
-        while (loop) {
-           Optional<String> value  = map.get("50");
-                if (value.isPresent())
-                    findCount++;
-        }
-    }
-}
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/JungleBenchMark.java	Fri Apr 17 22:12:44 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/JungleBenchMark.java	Sat Apr 18 20:13:12 2015 +0900
@@ -34,52 +34,30 @@
         Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()));
         JungleTree trees[] = new JungleTree[cpuNum];
 
-        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;
+        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)));
         JungleBenchMarkThread readThread[] = null;
 
         for (int THREAD_COUNT = 1; THREAD_COUNT <= cpuNum; THREAD_COUNT++) {
+
             readThread = new JungleBenchMarkThread[THREAD_COUNT];
-            JungleTree tree;
 
             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 {
@@ -87,6 +65,11 @@
                 System.exit(0);
             }
 
+            JungleWriteThread writeThread = null;
+            if (args[1].equals("write")) {
+                writeThread = new JungleWriteThread(tree);
+                writeThread.start();
+            }
             for (int count = 0; THREAD_COUNT > count; count++) {
                 readThread[count].start();
             }
@@ -94,8 +77,11 @@
             System.out.println("StartThread");
 
             Thread.sleep(1000);
+            if (args[1].equals("write")) {
+                writeThread.set(false);
+                writeThread.get();
+            }
             long readCount = 0;
-
             for (int count = 0; THREAD_COUNT > count; count++) {
                 readCount = readCount + readThread[count].getFindCount();
                 readThread[count].set(false);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/JungleWriteThread.java	Sat Apr 18 20:13:12 2015 +0900
@@ -0,0 +1,48 @@
+package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.test;
+
+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;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Created by e115731 on 15/04/18.
+ */
+public class JungleWriteThread extends Thread {
+
+    JungleTree tree;
+    boolean loop = true;
+    private int writeCount;
+
+    public JungleWriteThread(JungleTree tree) {
+        this.tree = tree;
+    }
+
+    public void set(boolean flag) {
+        loop = flag;
+    }
+
+    public void get() {
+        System.out.println("writeCount = " + writeCount);
+    }
+
+    ;
+
+    @Override
+    public void run() {
+        while (loop) {
+            try {
+                Thread.sleep(100);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+            JungleTreeEditor editor = tree.getTreeEditor();
+            editor = editor.putAttribute(new DefaultNodePath(), "key", ByteBuffer.wrap(String.valueOf(0).getBytes())).b();
+            if (editor.success().isA())
+                System.out.println("faild");
+            else
+                writeCount++;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/TatsukiTreeMapGetThread.java	Sat Apr 18 20:13:12 2015 +0900
@@ -0,0 +1,40 @@
+package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.test;
+
+import jp.ac.u_ryukyu.ie.cr.tatsuki.TreeMap.TreeMap;
+
+import java.util.Iterator;
+import java.util.Optional;
+
+
+/**
+ * Created by e115731 on 15/03/17.
+ */
+public class TatsukiTreeMapGetThread extends AbstractTreeMapThread {
+    TreeMap<String, String> map;
+    private long findCount;
+    boolean loop = true;
+
+    public TatsukiTreeMapGetThread(TreeMap map) {
+        this.map = map;
+    }
+
+    @Override
+    public long getFindCount() {
+        System.out.println("thread count = " + findCount);
+        return findCount;
+    }
+
+    @Override
+    public void set(boolean loop) {
+        this.loop = loop;
+    }
+
+    @Override
+    public void run() {
+        while (loop) {
+           Optional<String> value  = map.get("50");
+                if (value.isPresent())
+                    findCount++;
+        }
+    }
+}
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/TreeMapBenchMark.java	Fri Apr 17 22:12:44 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/TreeMapBenchMark.java	Sat Apr 18 20:13:12 2015 +0900
@@ -1,8 +1,6 @@
 package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.test;
 
 import fj.Ord;
-import fj.data.List;
-import fj.data.Option;
 import fj.data.TreeMap;
 import org.xml.sax.SAXException;
 
@@ -14,7 +12,7 @@
  */
 public class TreeMapBenchMark {
     public static void main(String[] args) throws InterruptedException, IOException, ParserConfigurationException, SAXException {
-
+        Thread.sleep(1000);
 
         if (args.length == 0) {
             System.out.println("args get or getLoop or list");
@@ -32,29 +30,38 @@
 
         for (int THREAD_COUNT = 1; THREAD_COUNT <= cpuNum; THREAD_COUNT++) {
 
-                readThread = new AbstractTreeMapThread[THREAD_COUNT];
+            readThread = new AbstractTreeMapThread[THREAD_COUNT];
+
+            if (args[0].equals("fj")) {
+                TreeMap<String, String> map = TreeMap.empty(Ord.stringOrd);
+                for (int count = 0; count < 1000; count++) {
+                    map = map.set(String.valueOf(count), String.valueOf(count));
+                }
+                for (int count = 0; THREAD_COUNT > count; count++) {
+                    readThread[count] = new FJTreeMapGetLoopThread(map);
+                }
+            } else if (args[0].equals("util")) {
+                java.util.TreeMap map = new java.util.TreeMap();
+                for (int count = 0; count < 1000; count++) {
+                    map.put(String.valueOf(count), String.valueOf(count));
+                }
 
-                if (args[0].equals("fj")) {
-                    TreeMap<String, String> map = TreeMap.empty(Ord.stringOrd);
-                    for (int count = 0 ;count < 1000 ; count++) {
-                        map = map.set(String.valueOf(count), String.valueOf(count));
-                    }
-                    for (int count = 0; THREAD_COUNT > count; count++) {
-                        readThread[count] = new FJTreeMapGetLoopThread(map);
-                    }
-                } else if (args[0].equals("tatsuki")) {
-                    jp.ac.u_ryukyu.ie.cr.tatsuki.TreeMap.TreeMap map = new jp.ac.u_ryukyu.ie.cr.tatsuki.TreeMap.TreeMap();
-                    for (int count = 0 ;count < 1000 ; count++) {
-                        map = map.put(String.valueOf(count), String.valueOf(count));
-                    }
+                for (int count = 0; THREAD_COUNT > count; count++) {
+                    readThread[count] = new UtilTreeMapGetThread(map);
+                }
+            } else if (args[0].equals("tatsuki")) {
+                jp.ac.u_ryukyu.ie.cr.tatsuki.TreeMap.TreeMap map = new jp.ac.u_ryukyu.ie.cr.tatsuki.TreeMap.TreeMap();
+                for (int count = 0; count < 1000; count++) {
+                    map = map.put(String.valueOf(count), String.valueOf(count));
+                }
 
-                    for (int count = 0; THREAD_COUNT > count; count++) {
-                        readThread[count] = new FJTreeMapGetIteratorThread(map);
-                    }
-                } else{
-                    System.out.println("not allow args");
-                    System.exit(0);
+                for (int count = 0; THREAD_COUNT > count; count++) {
+                    readThread[count] = new TatsukiTreeMapGetThread(map);
                 }
+            }  else {
+                System.out.println("not allow args");
+                System.exit(0);
+            }
 
             for (int count = 0; THREAD_COUNT > count; count++) {
                 readThread[count].start();
@@ -66,14 +73,15 @@
             long readCount = 0;
 
             for (int count = 0; THREAD_COUNT > count; count++) {
+                readThread[count].set(false);
                 readCount = readCount + readThread[count].getFindCount();
-                readThread[count].set(false);
+                readThread[count].stop();
             }
 
             pw.println(THREAD_COUNT + " " + readCount);
             System.out.println(THREAD_COUNT + "readCount = " + readCount);
         }
-
+        Thread.sleep(1000);
         pw.close();
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/UtilTreeMapGetThread.java	Sat Apr 18 20:13:12 2015 +0900
@@ -0,0 +1,36 @@
+package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.test;
+
+import java.util.TreeMap;
+
+/**
+ * Created by e115731 on 15/04/18.
+ */
+public class UtilTreeMapGetThread extends AbstractTreeMapThread {
+    TreeMap<String, String> map;
+    private long findCount;
+    boolean loop = true;
+
+    public UtilTreeMapGetThread(TreeMap map) {
+        this.map = map;
+    }
+
+    @Override
+    public long getFindCount() {
+        System.out.println("thread count = " + findCount);
+        return findCount;
+    }
+
+    @Override
+    public void set(boolean loop) {
+        this.loop = loop;
+    }
+
+    @Override
+    public void run() {
+        while (loop) {
+            String value = map.get("50");
+            if (value != null)
+                findCount++;
+        }
+    }
+}
\ No newline at end of file