231
|
1 package jp.ac.u_ryukyu.ie.cr.benchMark.persistent;
|
|
2
|
|
3 import jp.ac.u_ryukyu.ie.cr.jungle.Jungle;
|
331
|
4 import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree;
|
|
5 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor;
|
231
|
6 import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeList;
|
|
7 import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeListReader;
|
263
|
8 import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath;
|
331
|
9 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.treeEditor.DefaultTreeEditor;
|
231
|
10 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser;
|
|
11 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
|
329
|
12 import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error;
|
231
|
13 import jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations.NetworkNodePath;
|
|
14 import jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.PersistentJournal;
|
|
15 import jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.PersistentJungle;
|
|
16 import jp.ac.u_ryukyu.ie.cr.jungleNetwork.transaction.JungleUpdater;
|
|
17 import org.junit.Assert;
|
|
18
|
|
19 import java.io.*;
|
|
20 import java.nio.ByteBuffer;
|
|
21
|
|
22 public class DataReadBenchMark {
|
|
23
|
|
24 static ByteBuffer value = ByteBuffer.wrap("value".getBytes());
|
|
25 static String key = "key";
|
|
26 static int pos = 0;
|
|
27
|
|
28 public static void main(String[] args) throws IOException {
|
|
29
|
331
|
30 PersistentJournal journal1 = new PersistentJournal("commit.log");
|
317
|
31 Jungle jungle = new PersistentJungle(journal1, "uuid", new DefaultTraverser());
|
331
|
32 Jungle jungle2 = new PersistentJungle(journal1, "uuid3",new DefaultTraverser());
|
231
|
33 Long t1;
|
|
34 Long t2;
|
|
35 PrintWriter readTimeWriter = new PrintWriter(new BufferedWriter(new FileWriter(new File("./time/readTime"))));
|
|
36 PrintWriter writeTimeWriter = new PrintWriter(new BufferedWriter(new FileWriter(new File("./time/writeTime"))));
|
|
37 for (int i = 1 ; i <= 20 ; i++) {
|
|
38 jungle.createNewTree("hoge" + i);
|
|
39 JungleTree tree1 = jungle.getTreeByName("hoge" + i);
|
|
40 JungleTreeEditor editor;
|
|
41 NetworkNodePath path = new NetworkNodePath();
|
|
42 t1 = System.currentTimeMillis();
|
|
43 for (int j = 0; j < 100 * i; j++) {
|
263
|
44 editor = tree1.getJungleTreeEditor();
|
231
|
45 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(path, pos);
|
|
46 NodePath childPath = path.add(pos);
|
|
47 Assert.assertFalse(either.isA());
|
|
48 editor = either.b();
|
|
49 either = editor.putAttribute(childPath, key, value);
|
|
50 JungleTreeEditor editor2 = either.b();
|
|
51 either = editor2.success();
|
|
52 Assert.assertFalse(either.isA());
|
|
53 }
|
|
54 t2 = System.currentTimeMillis();
|
|
55
|
|
56 writeTimeWriter.println((100 * i) + " " + (t2 - t1));
|
|
57 System.out.println("write time = " + (t2 - t1));
|
|
58
|
|
59 PersistentJournal journal2 = new PersistentJournal();
|
331
|
60 journal2.setInputFile(new File( journal1.getLogName()));
|
|
61 journal2.setOutputFile(new File( journal1.getLogName()));
|
231
|
62 ChangeListReader reader = journal2.getReader();
|
|
63
|
|
64 t1 = System.currentTimeMillis();
|
|
65 for (ChangeList chList : reader) {
|
|
66 String treeName = chList.getTreeName();
|
|
67 JungleTree tree2 = jungle2.getTreeByName(treeName);
|
|
68 if (tree2 == null) {
|
|
69 tree2 = jungle2.createNewTree(treeName);
|
|
70 }
|
263
|
71 JungleTreeEditor editor2 = tree2.getJungleTreeEditor();
|
331
|
72 Either<Error, JungleTreeEditor> either2 = JungleUpdater.edit(editor2, chList);
|
231
|
73 Assert.assertFalse(either2.isA());
|
|
74 editor2 = either2.b();
|
|
75 editor2.success();
|
|
76 }
|
|
77
|
|
78 t2 = System.currentTimeMillis();
|
|
79 readTimeWriter.println((100 * i) + " " + (t2 - t1));
|
|
80 System.out.println("read time = " + (t2 - t1));
|
|
81
|
|
82 }
|
|
83 writeTimeWriter.close();
|
|
84 readTimeWriter.close();
|
|
85 journal1.close();
|
|
86 }
|
|
87 }
|