view src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/index/CreateIndexBenchMark.java @ 320:e3e4ffd746cb

commit
author tatsuki
date Tue, 07 Feb 2017 21:34:21 +0900
parents 5c4f8a7b4468
children
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.benchMark.index;

import jp.ac.u_ryukyu.ie.cr.benchMark.JungleTreeCreater;
import jp.ac.u_ryukyu.ie.cr.jungle.DefaultJungle;
import jp.ac.u_ryukyu.ie.cr.jungle.Jungle;
import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath;
import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath;
import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.RedBlackTreeNodePath;
import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor;
import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree;

import static java.lang.Thread.sleep;

/**
 * Created by e115731 on 2016/12/30.
 */
public class CreateIndexBenchMark {
    private static String key = "key";
    private static String indexKey = "indexKey";
    static int distanceCreateIndex = 1;

    public static void main(String args[]) throws InterruptedException {
        if (args.length == 0) {
            System.out.println("args default or redblack");
            System.exit(0);
        }

        if (args[0].equals("default")) {
            System.out.println("create default tree");
        } else {
            System.out.println("create red black tree");
        }

        warmUp(args);
        for (int i = 0; i <= 1000; ) {
            Jungle jungle = new DefaultJungle(null, "hogehoge");
            Long t1 = System.currentTimeMillis();
            JungleTree tree;
            NodePath path;
            if (args[0].equals("default")) {
                tree = jungle.createNewTree("Tree");
                path = new DefaultNodePath();
            } else {
                tree = jungle.createNewRedBlackTree("Tree", key);
                path = new RedBlackTreeNodePath();
            }
            JungleTreeEditor editor = tree.getJungleTreeEditor();
            int maxNodeCount = i;
            JungleTreeCreater creater = new JungleTreeCreater(maxNodeCount, distanceCreateIndex);
            editor = creater.createTree(editor, key, indexKey, path);
            Long t2 = System.currentTimeMillis();
            System.out.println((i) + " " + (t2 - t1));
            i = i + 100;
            System.gc(); //GCしないとクソみたいに重くなる
            sleep(1000);
        }
    }

    private static void warmUp(String[] args) {

        for (int i = 0; i <= 1000; ) {
            Jungle jungle = new DefaultJungle(null, "hogehoge");
            Long t1 = System.currentTimeMillis();
            JungleTree tree;
            NodePath path;
            if (args[0].equals("default")) {
                tree = jungle.createNewTree("Tree");
                path = new DefaultNodePath();
            } else {
                tree = jungle.createNewRedBlackTree("Tree", key);
                path = new RedBlackTreeNodePath();
            }
            JungleTreeEditor editor = tree.getJungleTreeEditor();
            int maxNodeCount = i;
            JungleTreeCreater creater = new JungleTreeCreater(maxNodeCount, distanceCreateIndex);
            editor = creater.createTree(editor, key, indexKey, path);
            Long t2 = System.currentTimeMillis();

            i = i + 100;
            System.gc(); //GCしないとクソみたいに重くなる
        }
    }
}