# HG changeset patch # User tatsuki # Date 1429355592 -32400 # Node ID 31d9158356de039397b69a60e31823d84c7c56c1 # Parent 868a746996ad82a6d490df27a5300f262cf0e2d8 add JungleWriteThread to JungleBenchMark diff -r 868a746996ad -r 31d9158356de src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/FJTreeMapGetIteratorThread.java --- 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 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 value = map.get("50"); - if (value.isPresent()) - findCount++; - } - } -} diff -r 868a746996ad -r 31d9158356de src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/JungleBenchMark.java --- 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); diff -r 868a746996ad -r 31d9158356de src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/JungleWriteThread.java --- /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++; + } + } +} diff -r 868a746996ad -r 31d9158356de src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/TatsukiTreeMapGetThread.java --- /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 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 value = map.get("50"); + if (value.isPresent()) + findCount++; + } + } +} diff -r 868a746996ad -r 31d9158356de src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/TreeMapBenchMark.java --- 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 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 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(); } diff -r 868a746996ad -r 31d9158356de src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/UtilTreeMapGetThread.java --- /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 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