# HG changeset patch # User tatsuki # Date 1426574239 -32400 # Node ID 195c1a644550945323d8f05b06f870353cb8737f # Parent 17cc11b04157d9c608c56a486b76b4833282f90a benchmark add diff -r 17cc11b04157 -r 195c1a644550 .project --- a/.project Sun Feb 15 02:06:57 2015 +0900 +++ b/.project Tue Mar 17 15:37:19 2015 +0900 @@ -1,14 +1,16 @@ - jungle-bench - NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse. - - - - org.eclipse.jdt.core.javabuilder - - - - org.eclipse.jdt.core.javanature - - \ No newline at end of file + jungle-bench + + + + org.eclipse.jdt.core.javanature + + + + org.eclipse.jdt.core.javabuilder + + + + + diff -r 17cc11b04157 -r 195c1a644550 .settings/org.eclipse.jdt.core.prefs --- a/.settings/org.eclipse.jdt.core.prefs Sun Feb 15 02:06:57 2015 +0900 +++ b/.settings/org.eclipse.jdt.core.prefs Tue Mar 17 15:37:19 2015 +0900 @@ -1,11 +1,13 @@ +# +#Tue Mar 10 12:09:54 JST 2015 +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.debug.lineNumber=generate eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/.DS_Store Binary file src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/.DS_Store has changed diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/AtomicBench.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/AtomicBench.java Tue Mar 17 15:37:19 2015 +0900 @@ -0,0 +1,46 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle_core; +import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.lang.Integer;import java.lang.InterruptedException;import java.lang.Runtime;import java.lang.String;import java.lang.System;import java.util.concurrent.atomic.AtomicReference; + +/** + * Created by e115731 on 15/03/11. + */ +public class AtomicBench { + public static void main(String args[]) throws IOException { + Runtime rt = Runtime.getRuntime(); + int cpuNum = rt.availableProcessors(); + System.out.println("CPUCount = " + cpuNum); + File file = new File("strCount"); + PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); + + AtomicReferenceTest ref = new AtomicReferenceTest(0); + + for (int count = 1; count <= cpuNum; count++) { + readAtomicReservableReferenceThread th[] = new readAtomicReservableReferenceThread[count]; + for (int tcount = 0; tcount < count; tcount++) { + th[tcount] = new readAtomicReservableReferenceThread(ref); + th[tcount].start(); + } + try { + java.lang.Thread.sleep(2000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + long readCount = 0; + + for (int tcount = 0; tcount < count; tcount++) { + th[tcount].set(false); + System.out.println(th[tcount].get()); + readCount = readCount + th[tcount].get(); + } + + System.out.println("----------------------Thread Stop--------------------------------------------"); + + pw.println(count + " " + readCount); + System.out.println("ThreadTest count = " + count); + System.out.println("read count = " + (readCount)); + } + pw.close(); + System.out.println("-----------end--------------------------------------------------------"); + } +} diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/AtomicReferenceTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/AtomicReferenceTest.java Tue Mar 17 15:37:19 2015 +0900 @@ -0,0 +1,52 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle_core; + +import java.util.concurrent.atomic.AtomicReference; + +/** + * Created by e115731 on 15/03/15. + */ +public class AtomicReferenceTest { + + private AtomicReference reservation; + + public AtomicReferenceTest(Integer num) + { + reservation = new AtomicReference(new Reservation(num)); + } + + public Integer get() { + return reservation.get().get(); + } + + public class Reservation { + private AtomicReference reservation; + + public Reservation(Integer num) + { + reservation = new AtomicReference(new Reservation2(num)); + } + + + public Integer get(){ + return reservation.get().get(); + } + + public class Reservation2 { + public final AtomicReference ref; + + public Reservation2(Integer num) + { + ref = new AtomicReference(num); + } + + public void set(Integer num){ + ref.set(num); + } + + public Integer get(){ + return ref.get(); + } + } + } + + } diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReadTree.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReadTree.java Tue Mar 17 15:37:19 2015 +0900 @@ -0,0 +1,64 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle_core; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; +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.impl.DefaultNodePath; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; +import org.xml.sax.SAXException; + +import javax.xml.parsers.ParserConfigurationException; +import java.io.*; +import java.nio.ByteBuffer; + +/** + * Created by e115731 on 15/03/14. + */ +public class ReadTree { + + public static void main(String[] args) throws InterruptedException, IOException, ParserConfigurationException, SAXException { + System.out.println("startReadTree"); + + Runtime rt = Runtime.getRuntime(); + int cpuNum = rt.availableProcessors(); + + File file = new File("./time/readTree"); + DefaultJungle jungle = new DefaultJungle(null,"sample", new DefaultTreeEditor(new DefaultTraverser())); + jungle.createNewTree("hoge"); + JungleTree tree = jungle.getTreeByName("hoge"); + JungleTreeEditor editor = tree.getTreeEditor(); + editor = editor.putAttribute(new DefaultNodePath(), "test", ByteBuffer.wrap("test".getBytes())).b(); + editor.success(); + + PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); + for (int THREAD_COUNT = 1; THREAD_COUNT <= cpuNum; THREAD_COUNT++) { + ReadTreeThread readThread[] = new ReadTreeThread[THREAD_COUNT]; + ; + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count] = new ReadTreeThread(tree); + } + + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count].start(); + } + + System.out.println("StartThread"); + + Thread.sleep(1000); + long readCount = 0; + + for (int count = 0; THREAD_COUNT > count; count++) { + readCount = readCount + readThread[count].getFindCount(); + readThread[count].set(false); + } + + pw.println(THREAD_COUNT + " " + readCount); + System.out.println(THREAD_COUNT + "readCount = " + readCount); + } + + pw.close(); + } + +} + diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReadTreeThread.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReadTreeThread.java Tue Mar 17 15:37:19 2015 +0900 @@ -0,0 +1,48 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle_core; + +import jp.ac.u_ryukyu.cr.ie.tatsuki.xmlTestBbs.JuGrix; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; + +import java.util.Random; + +/** + * Created by e115731 on 15/03/14. + */ +public class ReadTreeThread extends Thread { + + JungleTree tree; + private long findCount; + + boolean loop = true; + + public ReadTreeThread(JungleTree tree) { + this.tree = tree; + this.findCount = 0; + } + + public long getFindCount() { + System.out.println("thread count = " + findCount); + return findCount; + } + + public void set(boolean loop) { + this.loop = loop; + } + + @Override + public void run() { + while (loop) { + TreeNode root = tree.getRootNode(); + if (root.getAttributes().getString("test").equals("test")) + findCount++; + else + System.out.println("faild"); + // String attribute = root.getAttributes().getString("test"); + // if (attribute.equals("test")) + // findCount++; + // else + // System.out.println("faild"); + } + } +} diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReplaceRootNodeAtBench.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReplaceRootNodeAtBench.java Tue Mar 17 15:37:19 2015 +0900 @@ -0,0 +1,91 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle_core; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.lang.management.ManagementFactory; +import java.lang.management.ThreadMXBean; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; +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.impl.DefaultNodePath; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; + +public class ReplaceRootNodeAtBench { + + public static void main(String args[]) throws IOException, InterruptedException { + System.out.println("Start"); + File addNewChildFile = new File("./time/addNewChildTime"); + PrintWriter apw = new PrintWriter(new BufferedWriter(new FileWriter(addNewChildFile))); + File pushPopFile = new File("./time/pushPopTime"); + PrintWriter ppw = new PrintWriter(new BufferedWriter(new FileWriter(pushPopFile))); + + ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean(); + long t1 = 0; + long t2 = 0; + + for (int count = 0; count <= 40; count++) { + + System.out.println("count = " + count); + Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTreeEditor(new DefaultTraverser())); + jungle.createNewTree("normalTree"); + JungleTree tree = jungle.getTreeByName("normalTree"); + JungleTreeEditor editor = tree.getTreeEditor(); + DefaultNodePath path = new DefaultNodePath(); + + t1 = threadMXBean.getCurrentThreadCpuTime(); + for (int addCount = 0; addCount < 100 * count; addCount++) { + Either either = editor.addNewChildAt(path, 0); + if (either.isA()) { + System.out.println("Error"); + System.exit(0); + } + editor = either.b(); + path = path.add(0); + } + + editor.success(); + t2 = threadMXBean.getCurrentThreadCpuTime(); + System.out.println("NormalTime = " + (t2 - t1)); + apw.println(count * 100 + " " + (t2 - t1)); + + + jungle.createNewTree("push/popTree"); + JungleTree pushPopTree = jungle.getTreeByName("push/popTree"); + JungleTreeEditor pushPopEditor = pushPopTree.getTreeEditor(); + + t1 = threadMXBean.getCurrentThreadCpuTime(); + for (int addCount = 0; addCount < count * 100; addCount++) { + Either either = pushPopEditor.replaceNewRootNode(); + if (either.isA()) { + System.out.println("Error"); + System.exit(0); + } + pushPopEditor = either.b(); + } + pushPopEditor.success(); + t2 = threadMXBean.getCurrentThreadCpuTime(); + System.out.println("push/popTime = " + (t2 - t1)); + ppw.println(count * 100 + " " + (t2 - t1)); + + + // gc + jungle = null; + tree = null; + editor = null; + pushPopTree = null; + pushPopEditor = null; + System.gc(); + Thread.sleep(1000); + } + apw.close(); + ppw.close(); + } +} diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/readAtomicReservableReferenceThread.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/readAtomicReservableReferenceThread.java Tue Mar 17 15:37:19 2015 +0900 @@ -0,0 +1,37 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle_core; +import java.lang.Integer;import java.lang.Override;import java.lang.Thread;import java.util.concurrent.atomic.AtomicReference; + +public class readAtomicReservableReferenceThread extends Thread { + + AtomicReferenceTest ref; + boolean flag; + long findcount; + public readAtomicReservableReferenceThread(AtomicReferenceTest ref) { + this.flag = true; + this.ref = ref; + } + + @Override + public void run() { + while (flag) { + if (ref.get() == 0) + findcount ++; + else + System.out.println("faild"); +// try { +// Thread.sleep(1); +// } catch (InterruptedException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } + } + } + + public long get() { + return findcount; + } + + public void set(boolean flag) { + this.flag = flag; + } +} diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/oldTree/GetOldTreeTime.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/oldTree/GetOldTreeTime.java Sun Feb 15 02:06:57 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/oldTree/GetOldTreeTime.java Tue Mar 17 15:37:19 2015 +0900 @@ -8,7 +8,6 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/treemap/FJTreeMapSetTime.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/treemap/FJTreeMapSetTime.java Tue Mar 17 15:37:19 2015 +0900 @@ -0,0 +1,50 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.treemap; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Random; + +import fj.Ord; +import fj.data.TreeMap; + +public class FJTreeMapSetTime { + + public static void main(String args[]) throws IOException { + System.out.println("put"); + File putFile = new File("./time/fjPut"); + PrintWriter putPw = new PrintWriter(new BufferedWriter(new FileWriter(putFile))); + File getFile = new File("./time/newFjGet"); + PrintWriter getPw = new PrintWriter(new BufferedWriter(new FileWriter(getFile))); + TreeMap map = TreeMap.empty(Ord.intOrd); + long t1 = 0; + long t2 = 0; + long t3 = 0; + long t4 = 0; + for (int count = 0; count <= 30000; count++) { + t1 = System.currentTimeMillis(); + map = map.set(count, count); + t2 = System.currentTimeMillis(); + if (count % 100 == 0 && count != 0) { + System.out.println("put time " + " " + (t2 - t1)); + long sum = 0; + for (int count1 = 0; count1 < 20; count1++) { + Random ran = new Random(); + int getValue = ran.nextInt(count); + t3 = System.currentTimeMillis(); + map.get(getValue); + t4 = System.currentTimeMillis(); + sum = sum + (t4 - t3); + } + System.out.println("get time = " + (sum / 20)); + putPw.println(count + " " + (t2 - t1)); + getPw.println(count + " " + (sum / 20)); + } + } + putPw.close(); + getPw.close(); + } + +} diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/treemap/UntilTreeMapPutTime.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/treemap/UntilTreeMapPutTime.java Tue Mar 17 15:37:19 2015 +0900 @@ -0,0 +1,31 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.treemap; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.TreeMap; + +public class UntilTreeMapPutTime { + + public static void main(String args[]) throws IOException { + File file = new File("./time/untilGet"); + PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); + TreeMap map = new TreeMap(); + for (int count = 0; count <= 30000; count++) { + long t1 = System.currentTimeMillis(); + map.put(count, count); + long t2 = System.currentTimeMillis(); + map.get(count); + long t3 = System.currentTimeMillis(); + if ((count % 100) == 0) { + System.out.println("put time " + count + " " + (t2 - t1)); + System.out.println("get time " + count + " " + (t3 - t2)); + + pw.println(count + " " + (t3 - t2)); + } + } + pw.close(); + } +} diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/treemap/UtilTreeMapMemery.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/treemap/UtilTreeMapMemery.java Tue Mar 17 15:37:19 2015 +0900 @@ -0,0 +1,38 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.treemap; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.LinkedList; +import java.util.TreeMap; + + +public class UtilTreeMapMemery { + + public static void main(String args[]) throws IOException { + File getFile = new File("./time/utilMemory"); + PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(getFile))); + TreeMap map = new TreeMap(); + LinkedList> list = new LinkedList>(); + list.add(map); + for (Integer count = 0; count <= 10000; count++) { + TreeMap newMap = list.getLast(); + TreeMap copyMap = new TreeMap(newMap); + copyMap.put(count, count); + list.add(copyMap); + long used = getMemory(); + System.out.println(count + " " + used); + pw.println(count + " " + used); + } + pw.close(); + } + + public static long getMemory() { + long free = Runtime.getRuntime().freeMemory() / 1024; + long total = Runtime.getRuntime().totalMemory() / 1024; + long used = total - free; + return used; + } +} diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/treemap/functionalJavaTreeMapMemory.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/treemap/functionalJavaTreeMapMemory.java Tue Mar 17 15:37:19 2015 +0900 @@ -0,0 +1,38 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.treemap; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.LinkedList; + +import fj.Ord; +import fj.data.TreeMap; + + +public class functionalJavaTreeMapMemory { + public static void main(String args[]) throws IOException { + File getFile = new File("./time/fjMemory"); + PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(getFile))); + TreeMap map = TreeMap.empty(Ord.intOrd); + LinkedList> list = new LinkedList>(); + list.add(map); + for (Integer count = 0; count <= 10000; count++) { + TreeMap newMap = list.getLast(); + TreeMap copyMap = newMap.set(count, count); + list.add(copyMap); + long used = getMemory(); + System.out.println(count + " " + used); + pw.println(count + " " + used); + } + pw.close(); + } + + public static long getMemory() { + long free = Runtime.getRuntime().freeMemory() / 1024; + long total = Runtime.getRuntime().totalMemory() / 1024; + long used = total - free; + return used; + } +} diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/ReadJungleThread.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/ReadJungleThread.java Sun Feb 15 02:06:57 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/ReadJungleThread.java Tue Mar 17 15:37:19 2015 +0900 @@ -1,25 +1,26 @@ package jp.ac.u_ryukyu.ie.cr.tatsuki.xml; -import java.util.Iterator; import java.util.Random; - import jp.ac.u_ryukyu.cr.ie.tatsuki.xmlTestBbs.JuGrix; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; + public class ReadJungleThread extends Thread { JuGrix jugrix; int findCount; + int successCount; + int faildCount; boolean loop = true; public ReadJungleThread(JuGrix jugrix) { this.jugrix = jugrix; this.findCount = 0; + this.successCount = 0; + this.faildCount = 0; } public int getFindCount() { + System.out.println("thread count = " + findCount); return findCount; } @@ -36,7 +37,10 @@ String value = String.valueOf(rnd.nextInt(400)); boolean account = jugrix.isActive("p:" + value,"v:1"); - // System.out.println(account); + if (account) + successCount++; + else + faildCount++; } } } diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementCreateIndex.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementCreateIndex.java Sun Feb 15 02:06:57 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementCreateIndex.java Tue Mar 17 15:37:19 2015 +0900 @@ -11,9 +11,12 @@ import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeContext; import org.xml.sax.SAXException; +import fj.Ord; import fj.data.List; +import fj.data.TreeMap; import ac.jp.u_ryukyu.cr.ie.tatsuki.xmlReader.ReadXmlHandler; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungleTree; @@ -22,16 +25,14 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.NullJournal; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; 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.store.impl.DefaultTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultChangeSet; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; -import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index; import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; public class TimeMeasurementCreateIndex { @@ -63,7 +64,7 @@ } } - private static JungleTree createJungleTree(String name) { + private static JungleTree createJungleTree(final String name) { ChangeList list = new ChangeList() { @Override public Iterator iterator() { @@ -84,11 +85,11 @@ }; DefaultTreeNode root = new DefaultTreeNode(); - Index index = new Index(); + TreeMap>> indexList = TreeMap.empty(Ord.stringOrd); + // TreeMap parentIndex = new ParentIndex().getParentIndex(); ParentIndex parentIndex = new ParentIndex(); - ChangeSet set = new DefaultChangeSet(root, null, list, "hoge", name, 0, index.getIndex(), + TreeContext tc = new DefaultTreeContext(root, null, list, "hoge", name, 0, indexList, parentIndex.getParentIndex()); - DefaultTreeContext tc = new DefaultTreeContext(root, set); JungleTree newTree = new DefaultJungleTree(tc, "hoge", new NullJournal().getWriter(), new DefaultTreeEditor( new DefaultTraverser())); return newTree; diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurement.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurement.java Sun Feb 15 02:06:57 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurement.java Tue Mar 17 15:37:19 2015 +0900 @@ -13,25 +13,14 @@ import org.xml.sax.SAXException; import jp.ac.u_ryukyu.cr.ie.tatsuki.xmlTestBbs.JuGrix; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; -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.store.impl.DefaultTreeEditor; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; public class TransactionPerSecondMeasurement { public static void main(String[] args) throws InterruptedException, IOException, ParserConfigurationException, SAXException { -// Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser())); -// JungleTree tree = jungle.createNewTree("testTree"); -// JungleTreeEditor editor = tree.getTreeEditor(); -// editor = createTree(0, new DefaultNodePath(), editor); - JuGrix jugrix = extendXmlTree.createJuGrix(true,100); - System.out.println("endCreatejugrixa "); -// editor = editor.success().b(); + System.out.println("endCreatejugrix"); + JuGrix jugrix = extendXmlTree.createJuGrix(true,400); System.out.println(Runtime.getRuntime().availableProcessors()); if (args.length > 0) { @@ -47,15 +36,19 @@ private static void readAndWrite(JuGrix jugrix) throws InterruptedException, IOException { System.out.println("read and write"); - File file = new File("./time/readAndWrite"); + Runtime rt = Runtime.getRuntime(); + int cpuNum = rt.availableProcessors(); + + File file = new File("./time/newTransactionReadAndWrite"); PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); - for (int THREAD_COUNT = 1; THREAD_COUNT <= 12; THREAD_COUNT++) { + + for (int THREAD_COUNT = 1; THREAD_COUNT <= cpuNum; THREAD_COUNT++) { ReadJungleThread readThread[] = new ReadJungleThread[THREAD_COUNT]; for (int count = 0; THREAD_COUNT > count; count++) { readThread[count] = new ReadJungleThread(jugrix); } - WriteJungleThread writeThread = new WriteJungleThread(null); + WriteJungleThread writeThread = new WriteJungleThread(jugrix); writeThread.start(); for (int count = 0; THREAD_COUNT > count; count++) { readThread[count].start(); @@ -70,7 +63,6 @@ for (int count = 0; THREAD_COUNT > count; count++) { readCount = readCount + readThread[count].getFindCount(); readThread[count].set(false); - System.out.println(readThread[count].getFindCount()); } @@ -82,10 +74,13 @@ } private static void readOnly(JuGrix jugrix) throws InterruptedException, IOException { - System.out.println("read onlya"); + System.out.println("read only"); + Runtime rt = Runtime.getRuntime(); + int cpuNum = rt.availableProcessors(); + File file = new File("./time/readOnly"); PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); - for (int THREAD_COUNT = 1; THREAD_COUNT <= 12; THREAD_COUNT++) { + for (int THREAD_COUNT = 1; THREAD_COUNT <= cpuNum; THREAD_COUNT++) { ReadJungleThread readThread[] = new ReadJungleThread[THREAD_COUNT]; ; for (int count = 0; THREAD_COUNT > count; count++) { @@ -104,11 +99,12 @@ for (int count = 0; THREAD_COUNT > count; count++) { readCount = readCount + readThread[count].getFindCount(); readThread[count].set(false); - System.out.println(readThread[count].getFindCount()); } + pw.println(THREAD_COUNT + " " + readCount); System.out.println(THREAD_COUNT + "readCount = " + readCount); } + pw.close(); } diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurementSeparation.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurementSeparation.java Tue Mar 17 15:37:19 2015 +0900 @@ -0,0 +1,58 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.xml; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; + +import javax.xml.parsers.ParserConfigurationException; +import jp.ac.u_ryukyu.cr.ie.tatsuki.xmlTestBbs.JuGrix; +import org.xml.sax.SAXException; + +public class TransactionPerSecondMeasurementSeparation { + + public static void main(String[] args) throws InterruptedException, IOException, ParserConfigurationException, + SAXException { + System.out.println("endCreatejugrix"); + + Runtime rt = Runtime.getRuntime(); + int cpuNum = rt.availableProcessors(); + System.out.println("CPUCOUNT = " + cpuNum); + File file = new File("./time/copyJungleReadOnly"); + + JuGrix jugrix[] = new JuGrix[cpuNum]; + for (int THREAD_COUNT = 0; THREAD_COUNT < cpuNum; THREAD_COUNT++) { + jugrix[THREAD_COUNT] = extendXmlTree.createJuGrix(true, 400); + } + + PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); + for (int THREAD_COUNT = 1; THREAD_COUNT <= cpuNum; THREAD_COUNT++) { + ReadJungleThread readThread[] = new ReadJungleThread[THREAD_COUNT]; + + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count] = new ReadJungleThread(jugrix[count]); + } + + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count].start(); + } + + System.out.println("StartThread"); + + Thread.sleep(1000); + int readCount = 0; + + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count].set(false); + readCount = readCount + readThread[count].getFindCount(); + } + + pw.println(THREAD_COUNT + " " + readCount); + System.out.println(THREAD_COUNT + "readCount = " + readCount); + } + + pw.close(); + } + +} diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/WriteJungleThread.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/WriteJungleThread.java Sun Feb 15 02:06:57 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/WriteJungleThread.java Tue Mar 17 15:37:19 2015 +0900 @@ -2,6 +2,7 @@ import java.nio.ByteBuffer; +import jp.ac.u_ryukyu.cr.ie.tatsuki.xmlTestBbs.JuGrix; 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.impl.DefaultNodePath; @@ -13,9 +14,9 @@ int writeCount; boolean loop = true; - public WriteJungleThread(JungleTree tree) { - this.tree = tree; - this.editor = tree.getTreeEditor(); + public WriteJungleThread(JuGrix jugrix) { + this.tree = jugrix.getPersonTree(); + editor = tree.getTreeEditor(); this.writeCount = 0; } @@ -30,7 +31,7 @@ @Override public void run() { while (loop) { - editor = editor.putAttribute(new DefaultNodePath(), "KEY", ByteBuffer.wrap("2".getBytes())).b(); + editor = editor.putAttribute(new DefaultNodePath().add(0), "element", ByteBuffer.wrap("Persons".getBytes())).b(); editor = editor.success().b(); writeCount++; diff -r 17cc11b04157 -r 195c1a644550 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/extendXmlTree.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/extendXmlTree.java Sun Feb 15 02:06:57 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/extendXmlTree.java Tue Mar 17 15:37:19 2015 +0900 @@ -84,7 +84,7 @@ } public static JungleTreeEditor extendsTree(JungleTreeEditor editor, JungleTree orgTree, JungleTree roleTree, int count) { - Random rdm = new Random(); + Random rdm = new Random(System.currentTimeMillis()); int orgNum = rdm.nextInt(30); String orgId = "o:" + String.valueOf(orgNum); String orgRoleId = searchOrgRole(orgTree, orgId);