view src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/TreeMapBenchMark.java @ 190:a01507a9f826 default tip

change TreeMapBenchMark
author tatsuki
date Tue, 21 Apr 2015 17:28:20 +0900
parents 31d9158356de
children
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.test;

import fj.Ord;
import fj.data.TreeMap;
import org.xml.sax.SAXException;

import javax.xml.parsers.ParserConfigurationException;
import java.io.*;

/**
 * Created by e115731 on 15/03/17.
 */
public class TreeMapBenchMark {
    public static void main(String[] args) throws InterruptedException, IOException {
        Thread.sleep(5000);

        if (args.length == 0) {
            System.out.println("args get or getLoop or list");
            System.exit(0);
        }

        Runtime rt = Runtime.getRuntime();
        int cpuNum = rt.availableProcessors();

        File file = new File("./time/" + args[0] + "Time");

        PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));

        AbstractTreeMapThread readThread[] = null;

        for (int THREAD_COUNT = 1; THREAD_COUNT <= cpuNum; THREAD_COUNT++) {

            readThread = new AbstractTreeMapThread[THREAD_COUNT];

            if (args[0].equals("fj")) {
                TreeMap<String, String> map = TreeMap.empty(Ord.stringOrd);
                for (int count = 0; count < 1000; count++) {
                    map = map.set(String.valueOf(count), String.valueOf(count));
                }
                for (int count = 0; THREAD_COUNT > count; count++) {
                    readThread[count] = new FJTreeMapGetLoopThread(map);
                }
            } else if (args[0].equals("util")) {
                java.util.TreeMap map = new java.util.TreeMap();
                for (int count = 0; count < 1000; count++) {
                    map.put(String.valueOf(count), String.valueOf(count));
                }

                for (int count = 0; THREAD_COUNT > count; count++) {
                    readThread[count] = new UtilTreeMapGetThread(map);
                }
            } else if (args[0].equals("tatsuki")) {
                jp.ac.u_ryukyu.ie.cr.tatsuki.TreeMap.TreeMap map = new jp.ac.u_ryukyu.ie.cr.tatsuki.TreeMap.TreeMap();
                for (int count = 0; count < 1000; count++) {
                    map = map.put(String.valueOf(count), String.valueOf(count));
                }

                for (int count = 0; THREAD_COUNT > count; count++) {
                    readThread[count] = new TatsukiTreeMapGetThread(map);
                }
            }  else {
                System.out.println("not allow args");
                System.exit(0);
            }

            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++) {
                readThread[count].set(false);
                readCount = readCount + readThread[count].getFindCount();
                readThread[count].stop();
            }

            pw.println(THREAD_COUNT + " " + readCount);
            System.out.println(THREAD_COUNT + "readCount = " + readCount);
            Thread.sleep(1000);
        }

        pw.close();
    }

}