# HG changeset patch # User tatsuki # Date 1486061743 -32400 # Node ID 5c4f8a7b4468797ca724efdad591e0f2c9c35dc1 # Parent d6b81870216b8196ed59104619d82fcc92d1905c minor change diff -r d6b81870216b -r 5c4f8a7b4468 src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/index/CreateIndexBenchMark.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/index/CreateIndexBenchMark.java Wed Feb 01 04:04:17 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/index/CreateIndexBenchMark.java Fri Feb 03 03:55:43 2017 +0900 @@ -8,16 +8,23 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.RedBlackTreeNodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; +import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; +import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error; + +import java.nio.ByteBuffer; + +import static java.lang.Thread.sleep; /** * Created by e115731 on 2016/12/30. */ public class CreateIndexBenchMark { - public static void main(String args[]) { + public static void main(String args[]) throws InterruptedException { if (args.length == 0) { System.out.println("args default or difference"); System.exit(0); } + if (args[0].equals("default")) { System.out.println("create default tree"); } else { @@ -26,17 +33,17 @@ String key = "key"; String indexKey = "indexKey"; - - for (int i = 0; i <= 3000; ) { + warmUp(); + for (int i = 0; i <= 1000; ) { Jungle jungle = new DefaultJungle(null, "hogehoge"); Long t1 = System.currentTimeMillis(); JungleTree tree; NodePath path; if (args[0].equals("default")) { - tree = jungle.createNewTree("Tree" + i); + tree = jungle.createNewTree("Tree"); path = new DefaultNodePath(); } else { - tree = jungle.createNewRedBlackTree("Tree" + i, key); + tree = jungle.createNewRedBlackTree("Tree", key); path = new RedBlackTreeNodePath(); } JungleTreeEditor editor = tree.getJungleTreeEditor(); @@ -47,6 +54,19 @@ System.out.println((i) + " " + (t2 - t1)); i = i + 100; System.gc(); //GCしないとクソみたいに重くなる + sleep(1000); } } + + private static void warmUp(){ + Jungle jungle = new DefaultJungle(null, "hogehoge"); + JungleTree tree = jungle.createNewDifferenceTree("Tree"); + NodePath path = new DefaultNodePath(); + JungleTreeEditor editor = tree.getJungleTreeEditor(); + Either either = editor.putAttribute(path, "key", ByteBuffer.wrap("value".getBytes())); + if (either.isA()) + return; + editor = either.b(); + either = editor.success(); + } } diff -r d6b81870216b -r 5c4f8a7b4468 src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/tree/CreateListTreeBenchMark.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/tree/CreateListTreeBenchMark.java Wed Feb 01 04:04:17 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/tree/CreateListTreeBenchMark.java Fri Feb 03 03:55:43 2017 +0900 @@ -11,33 +11,45 @@ import java.nio.ByteBuffer; +import static java.lang.Thread.sleep; + public class CreateListTreeBenchMark { - public static void main(String args[]) { + public static void main(String args[]) throws InterruptedException { if (args.length == 0) { System.out.println("args default or difference"); System.exit(0); } - + WarmUp(); //初めの一回がやたら遅いのでWarmUpさせる。 if (args[0].equals("default")) defaultJungleTreeBenchMark(); - else - if (args[0].equals("difference")) - DifferenceJungleTreeBenchMark(); - else { - System.out.println("args default or difference"); - System.exit(0); - } + else if (args[0].equals("difference")) + DifferenceJungleTreeBenchMark(); + else { + System.out.println("args default or difference"); + System.exit(0); + } } - private static void DifferenceJungleTreeBenchMark() { + private static void WarmUp(){ + Jungle jungle = new DefaultJungle(null, "hogehoge"); + JungleTree tree = jungle.createNewDifferenceTree("Tree"); + NodePath path = new DefaultNodePath(); + JungleTreeEditor editor = tree.getJungleTreeEditor(); + Either either = editor.putAttribute(path, "key", ByteBuffer.wrap("value".getBytes())); + if (either.isA()) + return; + editor = either.b(); + either = editor.success(); + } + private static void DifferenceJungleTreeBenchMark() throws InterruptedException { System.out.println("differencialTree"); - for (int i = 1; i <= 150; i++) { + for (int i = 30; i <= 300; ) { Jungle jungle = new DefaultJungle(null, "hogehoge"); - JungleTree tree = jungle.createNewDifferenceTree("Tree" + i); + JungleTree tree = jungle.createNewDifferenceTree("Tree"); Long t1 = System.currentTimeMillis(); NodePath path = new DefaultNodePath(); - for (int j = 0; j < (1 * i); j++) { + for (int j = 0; j < i; j++) { JungleTreeEditor editor = tree.getJungleTreeEditor(); Either either = editor.putAttribute(path, "key", ByteBuffer.wrap("value".getBytes())); if (either.isA()) @@ -48,21 +60,23 @@ return; } Long t2 = System.currentTimeMillis(); - System.out.println((i * 1) + " " + (t2 - t1)); + System.out.println(i + " " + (t2 - t1)); System.gc(); + sleep(1000); + i += 30; } } - private static void defaultJungleTreeBenchMark() { + private static void defaultJungleTreeBenchMark() throws InterruptedException { System.out.println("defaultTree"); - for (int i = 1; i <= 150; i++) { + for (int i = 30; i <= 300; ) { Jungle jungle = new DefaultJungle(null, "hogehoge"); JungleTree tree = jungle.createNewTree("Tree" + i); Long t1 = System.currentTimeMillis(); NodePath path = new DefaultNodePath(); - for (int j = 0; j < (1 * i); j++) { + for (int j = 0; j < i; j++) { JungleTreeEditor editor = tree.getJungleTreeEditor(); - Either either = editor.addNewChildAndPutAttribute(path, 0,"key", ByteBuffer.wrap("value".getBytes())); + Either either = editor.addNewChildAndPutAttribute(path, 0, "key", ByteBuffer.wrap("value".getBytes())); if (either.isA()) return; editor = either.b(); @@ -73,8 +87,10 @@ } Long t2 = System.currentTimeMillis(); - System.out.println((i * 1) + " " + (t2 - t1)); + System.out.println(i + " " + (t2 - t1)); System.gc(); + sleep(1000); + i += 30; } } } diff -r d6b81870216b -r 5c4f8a7b4468 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/manager/DefaultTransactionManager.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/manager/DefaultTransactionManager.java Wed Feb 01 04:04:17 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/manager/DefaultTransactionManager.java Fri Feb 03 03:55:43 2017 +0900 @@ -73,8 +73,8 @@ Index index = tip.getIndex(); ParentIndex parentIndex = tip.getParentIndex(); InterfaceTraverser traverser = new DefaultInterfaceTraverser(newRoot, index, parentIndex, true); - //traverser.updateIndex(editNodeList); - traverser.createIndex(); + traverser.updateIndex(editNodeList); + //traverser.createIndex(); TreeContext newTreeContext = new DefaultTreeContext(newRoot, tip, list, uuid, _treeName, nextRevision, traverser); if (repository.compareAndSet(newTreeContext.prev(), newTreeContext)) { diff -r d6b81870216b -r 5c4f8a7b4468 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/core/NetworkDefaultJungle.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/core/NetworkDefaultJungle.java Wed Feb 01 04:04:17 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/core/NetworkDefaultJungle.java Fri Feb 03 03:55:43 2017 +0900 @@ -5,16 +5,19 @@ import jp.ac.u_ryukyu.ie.cr.jungle.data.list.List; import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeList; import jp.ac.u_ryukyu.ie.cr.jungle.persistent.Journal; +import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.DefaultInterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.InterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.store.TreeContext; import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.DefaultTreeOperationLog; import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.TreeOperationLog; import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.TreeOperation; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.context.DefaultTreeContext; +import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.treeEditor.DefaultTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.treeEditor.TreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.Default.DefaultTreeNode; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.DefaultInterfaceTraverser; +import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; +import jp.ac.u_ryukyu.ie.cr.jungle.traverser.Traverser; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.tree.TreeType; import jp.ac.u_ryukyu.ie.cr.jungleNetwork.transaction.NetworkDefaultJungleTree; @@ -29,11 +32,12 @@ private String uuid; private TreeEditor editor; - public NetworkDefaultJungle(Journal _journal, String _uuid, TreeEditor _editor) { + public NetworkDefaultJungle(Journal _journal, String _uuid) { journal = _journal; trees = new ConcurrentHashMap(); uuid = _uuid; - editor = _editor; + Traverser defaultTreverser = new DefaultTraverser(); + editor = new DefaultTreeEditor(defaultTreverser); } @Override