view src/main/java/jp/ac/u_ryukyu/ie/cr/benchMark/tree/CreateListTreeBenchMark.java @ 308:201cc75a9984

change Red Black Tree Edit Path Extends
author tatsuki
date Thu, 26 Jan 2017 15:23:25 +0900
parents a23069461460
children d6b81870216b
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.Error.Error;

import java.nio.ByteBuffer;

public class CreateListTreeBenchMark {

    public static void main(String args[]) {
        Jungle jungle = new DefaultJungle(null, "hogehoge");
        if (args.length == 0) {
            System.out.println("args default or difference");
            System.exit(0);
        }

        if (args[0].equals("default"))
            defaultJungleTreeBenchMark(jungle);
        else
            if (args[0].equals("difference"))
                DifferenceJungleTreeBenchMark(jungle);
            else {
                System.out.println("args default or difference");
                System.exit(0);
            }
    }

    private static void DifferenceJungleTreeBenchMark(Jungle jungle) {
        System.out.println("differencialTree");
        for (int i = 1; i <= 100; i++) {
            JungleTree tree = jungle.createNewDifferenceTree("Tree" + i);
            Long t1 = System.currentTimeMillis();
            NodePath path = new DefaultNodePath();
            for (int j = 0; j < (20 * 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;
            }
            System.gc();
            Long t2 = System.currentTimeMillis();
            System.out.println((i * 20) + " " + (t2 - t1));
        }
    }

    private static void defaultJungleTreeBenchMark(Jungle jungle) {
        System.out.println("defaultTree");
        for (int i = 1; i <= 10; i++) {
            JungleTree tree = jungle.createNewTree("Tree" + i);
            Long t1 = System.currentTimeMillis();
            NodePath path = new DefaultNodePath();
            for (int j = 0; j < (200 * 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 * 200) + " " + (t2 - t1));
        }
    }
}