view src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/test/TreeMapBenchMark.java @ 185:6d125ba315d8

benchmark new treeMap
author tatsuki
date Mon, 30 Mar 2015 00:49:19 +0900
parents 066d9c5758dc
children 868a746996ad
line wrap: on
line source

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

import fj.Ord;
import fj.data.List;
import fj.data.Option;
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 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;

        List<String> list = List.nil();
        if (args[0].equals("list")) {
            for (int count = 0 ;count < 100 ; count++) {
                list = list.cons(String.valueOf(count));
            }
        }

        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("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 FJTreeMapGetIteratorThread(map);
                    }
                } else if (args[0].equals("list")) {
                    for (int count = 0; THREAD_COUNT > count; count++) {
                        readThread[count] = new FJListAccessThread(Option.<List<String>>some(list));
                    }
                } 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();
    }

}