Mercurial > hg > Members > tatsuki > jungle-bench
changeset 4:671a67571a48
fixed WriteThread
author | one |
---|---|
date | Thu, 06 Mar 2014 05:08:24 +0900 |
parents | 37aab24020a0 |
children | 24fca21a576e |
files | .settings/org.eclipse.m2e.core.prefs src/main/java/example/SimplejungleMalti.java src/main/java/example/WriteThread.java |
diffstat | 3 files changed, 70 insertions(+), 62 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.settings/org.eclipse.m2e.core.prefs Thu Mar 06 05:08:24 2014 +0900 @@ -0,0 +1,5 @@ +#Tue Mar 04 00:33:07 JST 2014 +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1
--- a/src/main/java/example/SimplejungleMalti.java Thu Mar 06 04:17:40 2014 +0900 +++ b/src/main/java/example/SimplejungleMalti.java Thu Mar 06 05:08:24 2014 +0900 @@ -19,71 +19,76 @@ public class SimplejungleMalti extends Thread { public static final String key = "name"; public static final String valueString = "kanagawsa"; - public static final ByteBuffer value = ByteBuffer.wrap(valueString.getBytes()); + public static final ByteBuffer value = ByteBuffer.wrap(valueString + .getBytes()); public static void main(String[] args) { System.out.println(args[0]); System.out.println(args[1]); - int roopCount = Integer.parseInt(args[0]); + int roopCount = Integer.parseInt(args[0]); int threadCount = Integer.parseInt(args[1]); WriteThread[] wt = new WriteThread[threadCount]; - Jungle j = new DefaultJungle(null,"hogehoge",new DefaultTreeEditor(new DefaultTraverser())); - j.createNewTree("tree");//木を作った - JungleTree tree = j.getTreeByName("tree");//名前を取得 - JungleTreeEditor editor1 = tree.getTreeEditor();//editorの取得 - DefaultNodePath root = new DefaultNodePath();//パスの取得 - - //eitherに値を入れる - Either<Error,JungleTreeEditor> either = editor1.putAttribute(root,key,value); - if(either.isA()){//失敗した場合Aが出てくる + Jungle j = new DefaultJungle(null, "hogehoge", new DefaultTreeEditor( + new DefaultTraverser())); + j.createNewTree("tree");// 木を作った + JungleTree tree = j.getTreeByName("tree");// 名前を取得 + JungleTreeEditor editor1 = tree.getTreeEditor();// editorの取得 + NodePath root = new DefaultNodePath();// パスの取得 + + // eitherに値を入れる + Either<Error, JungleTreeEditor> either = editor1.putAttribute(root, + key, value); + if (either.isA()) {// 失敗した場合Aが出てくる Assert.fail(); } editor1 = either.b(); editor1.success(); - //ここで初めてSUCCESS - + // ここで初めてSUCCESS + Node node = tree.getRootNode(); ByteBuffer v = node.getAttributes().get(key); System.out.println(new String(v.array())); - - //------以下子ノードの値変更 - editor1 = tree.getTreeEditor();//Treeのeditorを作成 - either = editor1.addNewChildAt(root,0);//新しく入れるところへのパス - if(either.isA()){//ちゃんとパスを指定できたかチェック + + // ------以下子ノードの値変更 + editor1 = tree.getTreeEditor();// Treeのeditorを作成 + either = editor1.addNewChildAt(root, 0);// 新しく入れるところへのパス + if (either.isA()) {// ちゃんとパスを指定できたかチェック Assert.fail(); } - editor1 = either.b();//成功した場合パスを入れる + editor1 = either.b();// 成功した場合パスを入れる NodePath childPath = root.add(0); either = editor1.success(); - - //そしてここで子ノードに値を入れる - - long t1 = System.currentTimeMillis();//時間の測定開始 - - for(int count = 0 ; count < threadCount ; count++){ - wt[count] = new WriteThread(j,childPath ,(roopCount/threadCount),count); + if (either.isA()) {// ちゃんとパスを指定できたかチェック + Assert.fail(); + } + // そしてここで子ノードに値を入れる + + long t1 = System.currentTimeMillis();// 時間の測定開始 + for (int count = 0; count < threadCount; count++) { + wt[count] = new WriteThread(j, childPath, + (roopCount / threadCount), count); } - - for(int count = 0 ; count < threadCount ; count++){ - wt[count].start(); + for (int count = 0; count < threadCount; count++) { + wt[count].start(); } - - for(int count = 0 ; count < threadCount ; count++){ - try{ + + for (int count = 0; count < threadCount; count++) { + try { wt[count].join(); - }catch(InterruptedException e){} + } catch (InterruptedException e) { + } } - + long t2 = System.currentTimeMillis(); - System.out.println(t2-t1); - + System.out.println(t2 - t1 + "s"); + node = tree.getRootNode(); Children<Node> children = node.getChildren(); - Either<Error,Node> either2 = children.at(0); - if(either2.isA()){ + Either<Error, Node> either2 = children.at(0); + if (either2.isA()) { Assert.fail(); } - + Node childNode = either2.b(); ByteBuffer v2 = childNode.getAttributes().get(key); System.out.println(new String(v2.array()));
--- a/src/main/java/example/WriteThread.java Thu Mar 06 04:17:40 2014 +0900 +++ b/src/main/java/example/WriteThread.java Thu Mar 06 05:08:24 2014 +0900 @@ -6,23 +6,20 @@ 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.NodePath; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; import junit.framework.Assert; public class WriteThread extends Thread { public static final String key = "name"; - public String valueString = "tatsuki"; - public ByteBuffer value = ByteBuffer.wrap(valueString.getBytes()); - Either<Error,JungleTreeEditor> either; - JungleTreeEditor editor; - JungleTree tree; + public String valueString = "tatsuki"; + public ByteBuffer value = ByteBuffer.wrap(valueString.getBytes()); Jungle j; NodePath childPath; int roopCount; int num; - WriteThread(Jungle j,NodePath childPath , int roopCount , int num) { + + WriteThread(Jungle j, NodePath childPath, int roopCount, int num) { this.num = num; this.valueString = this.valueString + Integer.toString(num); this.value = ByteBuffer.wrap(valueString.getBytes()); @@ -30,24 +27,25 @@ this.j = j; this.childPath = childPath; } - -public void run() { - tree = j.getTreeByName("tree");//名前を取得 - editor = tree.getTreeEditor();//Treeのeditorを作成 - long t1 = System.currentTimeMillis();//時間の測定開始 - - for(int count = 0 ; count < roopCount ; count++){ - do{ - either = editor.putAttribute(childPath,key,value); - if(either.isA()){ - Assert.fail(); - } - editor = either.b(); - either = editor.success(); + + public void run() { + JungleTree tree = j.getTreeByName("tree");// 名前を取得 + Either<Error, JungleTreeEditor> either; + System.out.println("roopCount = " + roopCount); + long t1 = System.currentTimeMillis();// 時間の測定開始 + + for (int count = 0; count < roopCount; count++) { + do{ + JungleTreeEditor editor = tree.getTreeEditor();// Treeのeditorを作成 + either = editor.putAttribute(childPath, key, value); + if (either.isA()) { + Assert.fail(); + } + editor = either.b(); + either = editor.success(); }while(either.isA()); } long t2 = System.currentTimeMillis(); - System.out.println(num + "番目終わり" + (t2-t1) +"秒"); + System.out.println(num + "番目終わり" + (t2 - t1) + "秒"); } } -