# HG changeset patch # User tatsuki # Date 1430176568 -32400 # Node ID c8d8864714d4cf190e3b47fe7c978e5cbfbc5051 # Parent 195c1a644550945323d8f05b06f870353cb8737f add build.gradle diff -r 195c1a644550 -r c8d8864714d4 build.gradle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build.gradle Tue Apr 28 08:16:08 2015 +0900 @@ -0,0 +1,31 @@ +apply plugin: 'java' +apply plugin: 'maven' +apply plugin: "eclipse" + +group = 'jungle-bench' +version = '0.0.1-SNAPSHOT' + +description = """""" + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + + + +repositories { + + maven { url "http://repo.maven.apache.org/maven2" } +} +dependencies { + compile group: 'junit', name: 'junit', version:'4.7' + compile fileTree(dir: 'lib', include: '*.jar') +} + +jar { + manifest { + attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version + } + from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } + archiveName = 'jungle-bench.jar' +} + diff -r 195c1a644550 -r c8d8864714d4 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReadTree.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReadTree.java Tue Mar 17 15:37:19 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReadTree.java Tue Apr 28 08:16:08 2015 +0900 @@ -3,6 +3,7 @@ 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.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; @@ -11,6 +12,7 @@ import javax.xml.parsers.ParserConfigurationException; import java.io.*; import java.nio.ByteBuffer; +import java.util.Random; /** * Created by e115731 on 15/03/14. @@ -25,16 +27,18 @@ File file = new File("./time/readTree"); DefaultJungle jungle = new DefaultJungle(null,"sample", new DefaultTreeEditor(new DefaultTraverser())); - jungle.createNewTree("hoge"); - JungleTree tree = jungle.getTreeByName("hoge"); + JungleTree tree = jungle.createNewTree("tree" ); JungleTreeEditor editor = tree.getTreeEditor(); - editor = editor.putAttribute(new DefaultNodePath(), "test", ByteBuffer.wrap("test".getBytes())).b(); - editor.success(); + editor = editor.putAttribute(new DefaultNodePath(), "key", ByteBuffer.wrap(String.valueOf(0).getBytes())).b(); + JungleTreeEditor newEditor = createTree(0, new DefaultNodePath(), editor); + if (newEditor.success().isA()) { + System.out.println("success faild"); + System.exit(1); + } 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); } @@ -51,14 +55,39 @@ for (int count = 0; THREAD_COUNT > count; count++) { readCount = readCount + readThread[count].getFindCount(); readThread[count].set(false); + readThread[count] = null; } pw.println(THREAD_COUNT + " " + readCount); System.out.println(THREAD_COUNT + "readCount = " + readCount); + System.gc(); + System.out.println("-------------GC--------------"); + Thread.sleep(1000); } pw.close(); } + static Integer nodeNum = 1; + + public static JungleTreeEditor createTree(int deep, NodePath path, JungleTreeEditor editor) { + String value1 = String.valueOf(nodeNum); + nodeNum++; + String value2 = String.valueOf(nodeNum); + nodeNum++; + + editor = editor.addNewChildAt(path, 0).b(); + editor = editor.putAttribute(path.add(0), "key", ByteBuffer.wrap(value1.getBytes())).b(); + editor = editor.addNewChildAt(path, 1).b(); + editor = editor.putAttribute(path.add(1), "key", ByteBuffer.wrap(value2.getBytes())).b(); + deep++; + + if (deep < 10) { + editor = createTree(deep, path.add(0), editor); + editor = createTree(deep, path.add(1), editor); + } + return editor; + } + } diff -r 195c1a644550 -r c8d8864714d4 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReadTreeThread.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReadTreeThread.java Tue Mar 17 15:37:19 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/ReadTreeThread.java Tue Apr 28 08:16:08 2015 +0900 @@ -1,10 +1,10 @@ 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 jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; -import java.util.Random; +import java.util.Iterator; /** * Created by e115731 on 15/03/14. @@ -13,16 +13,17 @@ JungleTree tree; private long findCount; - + InterfaceTraverser traverser; boolean loop = true; public ReadTreeThread(JungleTree tree) { this.tree = tree; + traverser = tree.getTraverser(true); this.findCount = 0; } public long getFindCount() { - System.out.println("thread count = " + findCount); + System.out.println("threa count = " + findCount); return findCount; } @@ -33,16 +34,11 @@ @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"); + Iterator it = traverser.find(null, "key", "0"); + if (it.hasNext()) + findCount++; + else + System.out.println("faild"); } } } diff -r 195c1a644550 -r c8d8864714d4 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/findWrapper.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle_core/findWrapper.java Tue Apr 28 08:16:08 2015 +0900 @@ -0,0 +1,24 @@ +package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle_core; + +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; + +import java.util.Iterator; + +/** + * Created by e115731 on 15/03/20. + */ +public class findWrapper { + + InterfaceTraverser traverser; + + public findWrapper(JungleTree tree){ + this.traverser = tree.getTraverser(true); + } + + public boolean find(){ + Iterator it = traverser.find(null,"test","test"); + return it.hasNext(); + } +} diff -r 195c1a644550 -r c8d8864714d4 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 Tue Mar 17 15:37:19 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/ReadJungleThread.java Tue Apr 28 08:16:08 2015 +0900 @@ -33,10 +33,7 @@ while (loop) { findCount++; - Random rnd = new Random(); - - String value = String.valueOf(rnd.nextInt(400)); - boolean account = jugrix.isActive("p:" + value,"v:1"); + boolean account = jugrix.isActive("p:" + 100,"v:1"); if (account) successCount++; else diff -r 195c1a644550 -r c8d8864714d4 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 Tue Mar 17 15:37:19 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TimeMeasurementCreateIndex.java Tue Apr 28 08:16:08 2015 +0900 @@ -1,108 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.tatsuki.xml; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.Iterator; - -import javax.xml.parsers.ParserConfigurationException; -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; -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.persistent.ChangeList; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.NullJournal; -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.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.ParentIndex; - -public class TimeMeasurementCreateIndex { - - public static void main(String args[]) throws FileNotFoundException, ParserConfigurationException, SAXException, - IOException { - - int maxPersonCount = Integer.parseInt(args[0]); - Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser())); - JungleTree orgTree = readXml("Organization", jungle); - JungleTree roleTree = readXml("Role", jungle); - - File file = new File("./time/createParentIndexUntil"); - file.delete(); - - for (int personCount = 0; personCount <= maxPersonCount;) { - JungleTree tree = createJungleTree("Tree"); - JungleTreeEditor editor = tree.getTreeEditor(); - NodePath path = new DefaultNodePath(); - editor = editor.addNewChildAt(path, 0).b(); - editor = editor.putAttribute(path.add(0), "element", ByteBuffer.wrap("Persons".getBytes())).b(); - - for (int count = 0; count < personCount; count++) { - editor = extendXmlTree.extendsTree(editor, orgTree, roleTree, count); - } - editor.success(); - personCount = personCount + 10; - System.out.println("personCount" + personCount); - } - } - - private static JungleTree createJungleTree(final String name) { - ChangeList list = new ChangeList() { - @Override - public Iterator iterator() { - List nil = List.nil(); - return nil.iterator(); - } - - @Override - public String uuid() { - return "hoge"; - } - - @Override - public String getTreeName() { - return name; - } - - }; - - DefaultTreeNode root = new DefaultTreeNode(); - TreeMap>> indexList = TreeMap.empty(Ord.stringOrd); - // TreeMap parentIndex = new ParentIndex().getParentIndex(); - ParentIndex parentIndex = new ParentIndex(); - TreeContext tc = new DefaultTreeContext(root, null, list, "hoge", name, 0, indexList, - parentIndex.getParentIndex()); - JungleTree newTree = new DefaultJungleTree(tc, "hoge", new NullJournal().getWriter(), new DefaultTreeEditor( - new DefaultTraverser())); - return newTree; - } - - private static JungleTree readXml(String xml, Jungle jungle) throws ParserConfigurationException, SAXException, - IOException, FileNotFoundException { - SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); - SAXParser saxParser = saxParserFactory.newSAXParser(); - JungleTree tree = jungle.createNewTree(xml); - ReadXmlHandler readXmlHandler = new ReadXmlHandler(tree); - String currentPath = System.getProperty("user.dir"); - saxParser.parse(new FileInputStream(currentPath + "/xml/" + xml + ".xml"), readXmlHandler); - return readXmlHandler.getTree(); - } -} diff -r 195c1a644550 -r c8d8864714d4 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 Tue Mar 17 15:37:19 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurement.java Tue Apr 28 08:16:08 2015 +0900 @@ -18,113 +18,117 @@ public class TransactionPerSecondMeasurement { - public static void main(String[] args) throws InterruptedException, IOException, ParserConfigurationException, SAXException { - System.out.println("endCreatejugrix"); - JuGrix jugrix = extendXmlTree.createJuGrix(true,400); - System.out.println(Runtime.getRuntime().availableProcessors()); + public static void main(String[] args) throws InterruptedException, IOException, ParserConfigurationException, SAXException { + JuGrix jugrix = extendXmlTree.createJuGrix(true, 400); + System.out.println("endCreatejugrix"); + System.out.println(Runtime.getRuntime().availableProcessors()); + + if (args.length > 0) { - if (args.length > 0) { - - if (args[0].equals("read")) - readOnly(jugrix); - if (args[0].equals("write")) - readAndWrite(jugrix); + if (args[0].equals("read")) + readOnly(jugrix); + if (args[0].equals("write")) + readAndWrite(jugrix); - } else - System.out.println("Please with the argument"); - } + } else + System.out.println("Please with the argument"); + } + + private static void readAndWrite(JuGrix jugrix) throws InterruptedException, IOException { + System.out.println("read and write"); + Runtime rt = Runtime.getRuntime(); + int cpuNum = rt.availableProcessors(); - private static void readAndWrite(JuGrix jugrix) throws InterruptedException, IOException { - System.out.println("read and write"); - Runtime rt = Runtime.getRuntime(); - int cpuNum = rt.availableProcessors(); - - File file = new File("./time/newTransactionReadAndWrite"); - PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); + File file = new File("./time/newTransactionReadAndWrite"); + 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); - } + 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(jugrix); - writeThread.start(); - for (int count = 0; THREAD_COUNT > count; count++) { - readThread[count].start(); - } + WriteJungleThread writeThread = new WriteJungleThread(jugrix); + writeThread.start(); + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count].start(); + } - System.out.println("StartThread"); + System.out.println("StartThread"); - Thread.sleep(1000); - writeThread.set(false); - int readCount = 0; + Thread.sleep(1000); + writeThread.set(false); + int readCount = 0; - for (int count = 0; THREAD_COUNT > count; count++) { - readCount = readCount + readThread[count].getFindCount(); - readThread[count].set(false); - } + 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); - Thread.sleep(1000); + pw.println(THREAD_COUNT + " " + readCount); + System.out.println(THREAD_COUNT + "readCount = " + readCount); + Thread.sleep(1000); + } + pw.close(); } - pw.close(); - } - private static void readOnly(JuGrix jugrix) throws InterruptedException, IOException { - System.out.println("read only"); - Runtime rt = Runtime.getRuntime(); - int cpuNum = rt.availableProcessors(); + private static void readOnly(JuGrix jugrix) throws InterruptedException, IOException { + 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 <= cpuNum; THREAD_COUNT++) { - ReadJungleThread readThread[] = new ReadJungleThread[THREAD_COUNT]; - ; - for (int count = 0; THREAD_COUNT > count; count++) { - readThread[count] = new ReadJungleThread(jugrix); - } + File file = new File("./time/readOnly"); + 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); + } - for (int count = 0; THREAD_COUNT > count; count++) { - readThread[count].start(); - } + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count].start(); + } - System.out.println("StartThread"); + System.out.println("StartThread"); - Thread.sleep(1000); - int readCount = 0; + Thread.sleep(1000); + int 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); + for (int count = 0; THREAD_COUNT > count; count++) { + readCount = readCount + readThread[count].getFindCount(); + readThread[count].set(false); + readThread[count] = null; + } + + pw.println(THREAD_COUNT + " " + readCount); + System.out.println(THREAD_COUNT + "readCount = " + readCount); + System.gc(); + System.out.println("-------------GC--------------"); + Thread.sleep(1000); + } + + pw.close(); } - - pw.close(); - } - static String key = "KEY"; - - public static JungleTreeEditor createTree(int deep, NodePath path, JungleTreeEditor editor) { + static String key = "KEY"; - Random rnd = new Random(); - String value1 = String.valueOf(rnd.nextInt(1000)); - String value2 = String.valueOf(rnd.nextInt(1000)); - editor = editor.addNewChildAt(path, 0).b(); - editor = editor.putAttribute(path.add(0), key, ByteBuffer.wrap(value1.getBytes())).b(); - editor = editor.addNewChildAt(path, 1).b(); - editor = editor.putAttribute(path.add(0), key, ByteBuffer.wrap(value2.toString().getBytes())).b(); - deep++; + public static JungleTreeEditor createTree(int deep, NodePath path, JungleTreeEditor editor) { - if (deep < 12) { - editor = createTree(deep, path.add(0), editor); - editor = createTree(deep, path.add(1), editor); + Random rnd = new Random(); + String value1 = String.valueOf(rnd.nextInt(1000)); + String value2 = String.valueOf(rnd.nextInt(1000)); + editor = editor.addNewChildAt(path, 0).b(); + editor = editor.putAttribute(path.add(0), key, ByteBuffer.wrap(value1.getBytes())).b(); + editor = editor.addNewChildAt(path, 1).b(); + editor = editor.putAttribute(path.add(0), key, ByteBuffer.wrap(value2.toString().getBytes())).b(); + deep++; + + if (deep < 12) { + editor = createTree(deep, path.add(0), editor); + editor = createTree(deep, path.add(1), editor); + } + return editor; } - return editor; - } } diff -r 195c1a644550 -r c8d8864714d4 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurementSeparation.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurementSeparation.java Tue Mar 17 15:37:19 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/xml/TransactionPerSecondMeasurementSeparation.java Tue Apr 28 08:16:08 2015 +0900 @@ -7,52 +7,57 @@ 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"); + 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]; + 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] = new ReadJungleThread(jugrix[count]); - } + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count].start(); + } - for (int count = 0; THREAD_COUNT > count; count++) { - readThread[count].start(); - } + System.out.println("StartThread"); - System.out.println("StartThread"); + Thread.sleep(1000); + int readCount = 0; - Thread.sleep(1000); - int readCount = 0; + for (int count = 0; THREAD_COUNT > count; count++) { + readThread[count].set(false); + readCount = readCount + readThread[count].getFindCount(); + readThread[count] = null; + } - 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); + System.gc(); + System.out.println("-------------GC--------------"); + Thread.sleep(1000); + } - pw.println(THREAD_COUNT + " " + readCount); - System.out.println(THREAD_COUNT + "readCount = " + readCount); + pw.close(); } - pw.close(); - } - }