# 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);