Mercurial > hg > Members > tatsuki > jungle-bench
view src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReplaceRootNodeAtBench.java @ 20:195c1a644550
benchmark add
author | tatsuki |
---|---|
date | Tue, 17 Mar 2015 15:37:19 +0900 |
parents | |
children |
line wrap: on
line source
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<Error, JungleTreeEditor> 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<Error, JungleTreeEditor> 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(); } }