view src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/TreeMapBenchMark.java @ 180:2e6ca84686da

refactor TreeMap BenchMark
author tatsuki
date Tue, 17 Mar 2015 14:08:40 +0900
parents 817febd9c69b
children 7282ee629af3 066d9c5758dc
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, ParserConfigurationException, SAXException {


        if (args.length == 0) {
            System.out.println("args fj or util");
            System.exit(0);
        }

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

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

        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);
                    map = map.set("test","'test");
                    for (int count = 0; THREAD_COUNT > count; count++) {
                        readThread[count] = new FunctionalTreeMapReadThread(map);
                    }
                } else if (args[0].equals("util")) {
                    java.util.TreeMap map = new java.util.TreeMap();
                    map.put("test","test");
                    for (int count = 0; THREAD_COUNT > count; count++) {
                        readThread[count] = new UtilTreeMapReadThread(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++) {
                readCount = readCount + readThread[count].getFindCount();
                readThread[count].set(false);
            }

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

        pw.close();
    }

}