Mercurial > hg > Members > tatsuki > jungle-bench
comparison src/main/java/example/SimpleJungleRead.java @ 7:4e1f8f434648
Read refactoring
author | one |
---|---|
date | Tue, 01 Apr 2014 04:35:08 +0900 |
parents | 6954add9eea9 |
children | 442463aa27e5 |
comparison
equal
deleted
inserted
replaced
6:6954add9eea9 | 7:4e1f8f434648 |
---|---|
1 package example; | 1 package example; |
2 | 2 |
3 import java.nio.ByteBuffer; | 3 import java.nio.ByteBuffer; |
4 | 4 |
5 import fj.data.List; | |
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; | 6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; |
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; | 7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; |
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; | 8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; |
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; | 9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; |
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children; | |
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; | |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; | 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNode; | |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; | 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; | 12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; |
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; | |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; | 13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; |
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | 14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; |
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | 15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; |
19 import junit.framework.Assert; | 16 import junit.framework.Assert; |
20 | 17 |
33 ReadThread[] wt = new ReadThread[threadCount]; | 30 ReadThread[] wt = new ReadThread[threadCount]; |
34 Jungle j = new DefaultJungle(null, "hogehoge", new DefaultTreeEditor( | 31 Jungle j = new DefaultJungle(null, "hogehoge", new DefaultTreeEditor( |
35 new DefaultTraverser())); | 32 new DefaultTraverser())); |
36 j.createNewTree("tree");// 木を作った | 33 j.createNewTree("tree");// 木を作った |
37 JungleTree tree = j.getTreeByName("tree");// 名前を取得 | 34 JungleTree tree = j.getTreeByName("tree");// 名前を取得 |
38 JungleTreeEditor editor1 = tree.getTreeEditor();// editorの取得 | 35 // JungleTreeEditor editor1 = tree.getTreeEditor();// editorの取得 |
39 NodePath root = new DefaultNodePath();// パスの取得 | 36 // NodePath root = new DefaultNodePath();// パスの取得 |
40 | |
41 // eitherに値を入れる | |
42 Either<Error, JungleTreeEditor> either = editor1.putAttribute(root, | |
43 key, value); | |
44 if (either.isA()) {// 失敗した場合Aが出てくる | |
45 Assert.fail(); | |
46 } | |
47 editor1 = either.b(); | |
48 editor1.success(); | |
49 // ここで初めてSUCCESS | |
50 | |
51 Node node = tree.getRootNode(); | |
52 ByteBuffer v = node.getAttributes().get(key); | |
53 System.out.println(new String(v.array())); | |
54 | 37 |
55 // ------子ノードの追加 | 38 // ------子ノードの追加 |
39 List<DefaultNodePath> paths = generatePathPattern( | |
40 new DefaultNodePath(), 0, 3); | |
56 CreateTree(tree); | 41 CreateTree(tree); |
57 // ここまでノードの追加 | 42 // ここまでノードの追加 |
58 | |
59 long t1 = System.currentTimeMillis();// 時間の測定開始 | |
60 | 43 |
61 // ここで処理を行う | 44 // ここで処理を行う |
62 | 45 |
63 for (int count = 0; count < threadCount; count++) { | 46 for (int count = 0; count < threadCount; count++) { |
64 wt[count] = new ReadThread(j,(roopCount / threadCount)); | 47 wt[count] = new ReadThread(j, (roopCount / threadCount), paths); |
65 } | 48 } |
49 long t1 = System.currentTimeMillis();// 時間の測定開始 | |
66 for (int count = 0; count < threadCount; count++) { | 50 for (int count = 0; count < threadCount; count++) { |
67 wt[count].start(); | 51 wt[count].start(); |
68 } | 52 } |
69 | 53 |
70 for (int count = 0; count < threadCount; count++) { | 54 for (int count = 0; count < threadCount; count++) { |
71 try { | 55 try { |
72 wt[count].join(); | 56 wt[count].join(); |
73 } catch (InterruptedException e) { | 57 } catch (InterruptedException e) { |
74 } | 58 } |
75 } | 59 } |
76 | 60 |
77 | |
78 long t2 = System.currentTimeMillis(); | 61 long t2 = System.currentTimeMillis(); |
79 System.out.println(t2 - t1 + "s"); | 62 System.out.println(t2 - t1 + "s"); |
80 | 63 |
81 node = tree.getRootNode(); | 64 } |
82 Children<Node> children = node.getChildren(); | 65 |
83 Either<Error, Node> either2 = children.at(1); | 66 public static List<DefaultNodePath> generatePathPattern( |
84 // ここからしたまでテスト | 67 DefaultNodePath _cur, int _curHeight, int _maxHeight) { |
85 Node childNod = either2.b(); | 68 List<DefaultNodePath> paths = List.nil(); |
86 children = childNod.getChildren(); | 69 for (int p = 0; p <= _curHeight && p < 2; p++) { |
87 either2 = children.at(1); | 70 DefaultNodePath path = _cur.add(p); |
88 // ここまでてすと | 71 if (_curHeight != _maxHeight - 1) { |
89 if (either2.isA()) { | 72 List<DefaultNodePath> newpaths = generatePathPattern(path, |
90 Assert.fail(); | 73 _curHeight + 1, _maxHeight); |
74 paths = paths.append(newpaths); | |
75 } | |
76 paths = paths.cons(path); | |
91 } | 77 } |
92 | 78 |
93 Node childNode = either2.b(); | 79 return paths; |
94 ByteBuffer v2 = childNode.getAttributes().get(key); | |
95 System.out.println(new String(v2.array())); | |
96 } | 80 } |
97 | |
98 public static DefaultTreeNode factory = new DefaultTreeNode( | |
99 new DefaultNode()); | |
100 | 81 |
101 public static void CreateTree(JungleTree tree) { | 82 public static void CreateTree(JungleTree tree) { |
102 NodePath root = new DefaultNodePath(); | 83 NodePath root = new DefaultNodePath(); |
103 JungleTreeEditor editor1;// Treeのeditorを作成 | 84 CreateChildren(tree, root, 0); |
104 Either<Error, JungleTreeEditor> either; | |
105 | 85 |
106 for (int x = 0; x < 2; x++) { | 86 for (int x = 0; x < 2; x++) { |
107 // ノードの追加 | 87 // ノードの追加 |
108 editor1 = tree.getTreeEditor(); | 88 CreateChildren(tree, root.add(0), x); |
109 either = editor1.addNewChildAt(root, x);// 新しく入れるところへのパス | |
110 if (either.isA()) {// ちゃんとパスを指定できたかチェック | |
111 Assert.fail(); | |
112 } | |
113 editor1 = either.b();// 成功した場合パスを入れる | |
114 // NodePath childPath = root.add(x); | |
115 either = editor1.success(); | |
116 if (either.isA()) {// SUCCESSがちゃんと成功したかを調べる | |
117 Assert.fail(); | |
118 } | |
119 // ここまでノードの追加 | |
120 NodePath childPath = root.add(x); | |
121 JungleTreeEditor editor = tree.getTreeEditor();// Treeのeditorを作成 | |
122 either = editor.putAttribute(childPath, key, | |
123 ByteBuffer.wrap("Blazblue".getBytes())); | |
124 if (either.isA()) { | |
125 Assert.fail(); | |
126 } | |
127 editor = either.b(); | |
128 either = editor.success(); | |
129 for (int y = 0; y < 2; y++) { | 89 for (int y = 0; y < 2; y++) { |
130 editor1 = tree.getTreeEditor(); | 90 CreateChildren(tree, root.add(0).add(x), y); |
131 either = editor1.addNewChildAt(root.add(x), y);// 新しく入れるところへのパス | |
132 if (either.isA()) {// ちゃんとパスを指定できたかチェック | |
133 Assert.fail(); | |
134 } | |
135 editor1 = either.b();// 成功した場合パスを入れる | |
136 // childPath = root.add(y); | |
137 either = editor1.success(); | |
138 if (either.isA()) {// SUCCESSがちゃんと成功したかを調べる | |
139 Assert.fail(); | |
140 } | |
141 childPath = root.add(x).add(y); | |
142 editor = tree.getTreeEditor();// Treeのeditorを作成 | |
143 either = editor.putAttribute(childPath, key, | |
144 ByteBuffer.wrap("Blazblues".getBytes())); | |
145 if (either.isA()) { | |
146 Assert.fail(); | |
147 } | |
148 editor = either.b(); | |
149 either = editor.success(); | |
150 } | 91 } |
151 } | 92 } |
152 | 93 |
153 } | 94 } |
95 | |
96 public static void CreateChildren(JungleTree tree, NodePath root, int num) { | |
97 JungleTreeEditor editor = tree.getTreeEditor();// Treeのeditorを作成 | |
98 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(root, | |
99 num); // 新しく入れるところへのパス | |
100 if (either.isA()) {// ちゃんとパスを指定できたかチェック | |
101 Assert.fail(); | |
102 } | |
103 editor = either.b();// 成功した場合パスを入れる | |
104 // NodePath childPath = root.add(x); | |
105 either = editor.success(); | |
106 if (either.isA()) {// SUCCESSがちゃんと成功したかを調べる | |
107 Assert.fail(); | |
108 } | |
109 // ここまでノードの追加 | |
110 NodePath childPath = root.add(num); | |
111 editor = tree.getTreeEditor();// Treeのeditorを作成 | |
112 either = editor.putAttribute(childPath, key, | |
113 ByteBuffer.wrap("Blazblue".getBytes())); | |
114 if (either.isA()) { | |
115 Assert.fail(); | |
116 } | |
117 editor = either.b(); | |
118 either = editor.success(); | |
119 } | |
154 } | 120 } |