# HG changeset patch # User tatsuki # Date 1486470861 -32400 # Node ID e3e4ffd746cbcdfb3300bfff043793d0ae49da08 # Parent b606b727dc2b50b65d255b2d628d2d37697ccd0d commit diff -r b606b727dc2b -r e3e4ffd746cb build.gradle --- a/build.gradle Fri Feb 03 20:21:53 2017 +0900 +++ b/build.gradle Tue Feb 07 21:34:21 2017 +0900 @@ -18,7 +18,7 @@ dependencies { compile "commons-collections:commons-collections:3.2.1" compile "org.apache.maven.surefire:surefire-junit4:2.13" - compile "com.google.guava:guava:12.0" + compile group: 'com.google.guava', name: 'guava', version: '20.0' compile fileTree(dir: 'lib', include: '*.jar') compile group: 'junit', name: 'junit', version: '4.11' } diff -r b606b727dc2b -r e3e4ffd746cb src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/Data/TreeMapBenchMark.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/Data/TreeMapBenchMark.java Fri Feb 03 20:21:53 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/Data/TreeMapBenchMark.java Tue Feb 07 21:34:21 2017 +0900 @@ -4,26 +4,52 @@ import jp.ac.u_ryukyu.ie.cr.jungle.data.treemap.TreeMap; import java.util.ArrayList; -import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Optional; public class TreeMapBenchMark { public static void main(String[] args) { for (int i = 1; i <= 10; i++) { - TreeMap map = new TreeMap<>(); - ArrayList list = new ArrayList<>(); + TreeMap map = new TreeMap<>(); + + List insertValueList = new ArrayList<>(); + for (int count = 1; count < 100 * i; count++) { + insertValueList.add(0,String.valueOf(count)); + } - for (int count = 1; count < 100000 * i; count++) { - map = map.put(count, count); - list.add(count); + Iterator insertValueIterator = insertValueList.iterator(); + long t1 = System.currentTimeMillis(); + while (insertValueIterator.hasNext()) { + String str = insertValueIterator.next(); + map = map.put(str, str); + } + long t2 = System.currentTimeMillis(); + + List fiindValueList = new ArrayList<>(); + for (int count = 1; count < 1000; count++) { + fiindValueList.add(0,String.valueOf(count)); } - Collections.shuffle(list); - long t1 = System.currentTimeMillis(); - for (Integer num : list) { - map = map.delete(num); + Iterator findtValueIterator = fiindValueList.iterator(); + long t3 = System.currentTimeMillis(); + while (findtValueIterator.hasNext()) { + Optional ttt = map.get(findtValueIterator.next()); } - long t2 = System.currentTimeMillis(); - System.out.println((i * 100000) + " time = " + (t2 - t1)); + long t4 = System.currentTimeMillis(); + + Iterator deleteValueIterator = insertValueList.iterator(); + long t5 = System.currentTimeMillis(); + while (deleteValueIterator.hasNext()) { + map = map.delete(deleteValueIterator.next()); + } + long t6 = System.currentTimeMillis(); + System.out.println((i * 100) + " " + (t2 - t1)); //insert + //System.out.println((i * 100) + " " + (t4 - t3)); // find + //System.out.println((i * 100) + " " + (t6 - t5));// delete + } + + } } diff -r b606b727dc2b -r e3e4ffd746cb src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/JungleBenchMark.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/JungleBenchMark.java Fri Feb 03 20:21:53 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/JungleBenchMark.java Tue Feb 07 21:34:21 2017 +0900 @@ -33,6 +33,7 @@ editor = editor.putAttribute(path, "roleId", value2).b(); } editor.success(); + long t1 = System.currentTimeMillis(); for (int findCount = 0; findCount < 50000; ) { InterfaceTraverser traverser = tree.getTraverser(true); diff -r b606b727dc2b -r e3e4ffd746cb src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/JungleTreeCreater.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/JungleTreeCreater.java Fri Feb 03 20:21:53 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/JungleTreeCreater.java Tue Feb 07 21:34:21 2017 +0900 @@ -11,11 +11,15 @@ public class JungleTreeCreater { - int maxDeps; - int maxNodeCount; - int nodeCount = 1;//今作ったノードのカウント、rootがあるから最初は1 - public JungleTreeCreater(int maxNodeCount) { + private int maxDeps; + private int maxNodeCount; + private int distanceCreateIndex; + private int editCount = 0; + private int nodeCount = 1;//今作ったノードのカウント、rootがあるから最初は1 + + public JungleTreeCreater(int maxNodeCount, int distanceCreateIndex) { this.maxNodeCount = maxNodeCount; + this.distanceCreateIndex = distanceCreateIndex; this.maxDeps = getMaxDeps(maxNodeCount); } @@ -35,14 +39,18 @@ return editor; } String value = String.valueOf(nodeCount); - either = editor.addNewChildAndPutAttribute(path, i,key,ByteBuffer.wrap(value.getBytes())); + either = editor.addNewChildAndPutAttribute(path, i, key, ByteBuffer.wrap(value.getBytes())); if (either.isA()) Assert.fail(); editor = either.b(); - either = editor.success(); - if (either.isA()) - Assert.fail(); - editor = either.b(); + editCount++; + if (distanceCreateIndex == editCount) { + either = editor.success(); + if (either.isA()) + Assert.fail(); + editor = either.b(); + editCount = 0; + } nodeCount++; } for (int i = 0; i < 2; i++) { diff -r b606b727dc2b -r e3e4ffd746cb 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 Fri Feb 03 20:21:53 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/index/CreateIndexBenchMark.java Tue Feb 07 21:34:21 2017 +0900 @@ -8,10 +8,6 @@ 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; @@ -19,9 +15,13 @@ * Created by e115731 on 2016/12/30. */ public class CreateIndexBenchMark { + private static String key = "key"; + private static String indexKey = "indexKey"; + static int distanceCreateIndex = 1; + public static void main(String args[]) throws InterruptedException { if (args.length == 0) { - System.out.println("args default or difference"); + System.out.println("args default or redblack"); System.exit(0); } @@ -31,9 +31,7 @@ System.out.println("create red black tree"); } - String key = "key"; - String indexKey = "indexKey"; - warmUp(); + warmUp(args); for (int i = 0; i <= 1000; ) { Jungle jungle = new DefaultJungle(null, "hogehoge"); Long t1 = System.currentTimeMillis(); @@ -48,7 +46,7 @@ } JungleTreeEditor editor = tree.getJungleTreeEditor(); int maxNodeCount = i; - JungleTreeCreater creater = new JungleTreeCreater(maxNodeCount); + JungleTreeCreater creater = new JungleTreeCreater(maxNodeCount, distanceCreateIndex); editor = creater.createTree(editor, key, indexKey, path); Long t2 = System.currentTimeMillis(); System.out.println((i) + " " + (t2 - t1)); @@ -58,15 +56,28 @@ } } - 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 warmUp(String[] args) { + + 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"); + path = new DefaultNodePath(); + } else { + tree = jungle.createNewRedBlackTree("Tree", key); + path = new RedBlackTreeNodePath(); + } + JungleTreeEditor editor = tree.getJungleTreeEditor(); + int maxNodeCount = i; + JungleTreeCreater creater = new JungleTreeCreater(maxNodeCount, distanceCreateIndex); + editor = creater.createTree(editor, key, indexKey, path); + Long t2 = System.currentTimeMillis(); + + i = i + 100; + System.gc(); //GCしないとクソみたいに重くなる + } } } diff -r b606b727dc2b -r e3e4ffd746cb 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 Fri Feb 03 20:21:53 2017 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/transaction/manager/DefaultTransactionManager.java Tue Feb 07 21:34:21 2017 +0900 @@ -57,7 +57,6 @@ public int getTreeType() { return TreeType.DEFAULT; } - @Override public TreeOperationLog getLog() { return _log; @@ -73,8 +72,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)) {