view src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/tree/CreateListTreeBenchMark.java @ 329:2a0cb1f0ba4e

rename Error package
author kono
date Sat, 08 Jul 2017 21:05:55 +0900
parents 5c4f8a7b4468
children
line wrap: on
line source

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

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.transaction.editor.jungleTreeEditor.JungleTreeEditor;
import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree;
import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error;

import java.nio.ByteBuffer;

import static java.lang.Thread.sleep;

public class CreateListTreeBenchMark {

    public static void main(String args[]) throws InterruptedException {
        if (args.length == 0) {
            System.out.println("args default or difference");
            System.exit(0);
        }
        WarmUp(); //初めの一回がやたら遅いのでWarmUpさせる。
        if (args[0].equals("default"))
            defaultJungleTreeBenchMark();
        else if (args[0].equals("difference"))
            DifferenceJungleTreeBenchMark();
        else {
            System.out.println("args default or difference");
            System.exit(0);
        }
    }

    private static void WarmUp(){
        Jungle jungle = new DefaultJungle(null, "hogehoge");
        JungleTree tree = jungle.createNewDifferenceTree("Tree");
        NodePath path = new DefaultNodePath();
        JungleTreeEditor editor = tree.getJungleTreeEditor();
        Either<Error, JungleTreeEditor> either = editor.putAttribute(path, "key", ByteBuffer.wrap("value".getBytes()));
        if (either.isA())
            return;
        editor = either.b();
        either = editor.success();
    }
    private static void DifferenceJungleTreeBenchMark() throws InterruptedException {
        System.out.println("differencialTree");
        for (int i = 30; i <= 300; ) {
            Jungle jungle = new DefaultJungle(null, "hogehoge");
            JungleTree tree = jungle.createNewDifferenceTree("Tree");
            Long t1 = System.currentTimeMillis();
            NodePath path = new DefaultNodePath();
            for (int j = 0; j < i; j++) {
                JungleTreeEditor editor = tree.getJungleTreeEditor();
                Either<Error, JungleTreeEditor> either = editor.putAttribute(path, "key", ByteBuffer.wrap("value".getBytes()));
                if (either.isA())
                    return;
                editor = either.b();
                either = editor.success();
                if (either.isA())
                    return;
            }
            Long t2 = System.currentTimeMillis();
            System.out.println(i + " " + (t2 - t1));
            System.gc();
            sleep(1000);
            i += 30;
        }
    }

    private static void defaultJungleTreeBenchMark() throws InterruptedException {
        System.out.println("defaultTree");
        for (int i = 30; i <= 300; ) {
            Jungle jungle = new DefaultJungle(null, "hogehoge");
            JungleTree tree = jungle.createNewTree("Tree" + i);
            Long t1 = System.currentTimeMillis();
            NodePath path = new DefaultNodePath();
            for (int j = 0; j < i; j++) {
                JungleTreeEditor editor = tree.getJungleTreeEditor();
                Either<Error, JungleTreeEditor> either = editor.addNewChildAndPutAttribute(path, 0, "key", ByteBuffer.wrap("value".getBytes()));
                if (either.isA())
                    return;
                editor = either.b();
                path = path.add(0);
                either = editor.success();
                if (either.isA())
                    return;
            }

            Long t2 = System.currentTimeMillis();
            System.out.println(i + " " + (t2 - t1));
            System.gc();
            sleep(1000);
            i += 30;
        }
    }
}