MemoryOfBSTs.java


Below is the syntax highlighted version of MemoryOfBSTs.java from §3.3 Balanced Search Trees.


 /*************************************************************************
 *  Compilation:  javac -cp .:classmexer.jar MemoryOfBSTs.java
 *  Execution:    java  -cp .:classmexer.jar -javaagent:classmexer.jar MemoryOfBSTs N
 *  Dependencies: StdOut.java classmexer.jar
 *
 *
 *************************************************************************/
import com.javamex.classmexer.MemoryUtil;

import java.util.TreeMap;

public class MemoryOfBSTs {

    public static void main(String[] args) {

        int N = Integer.parseInt(args[0]);
        int START = 1000000;

        StdOut.println("size of Integer");
        Integer x = new Integer(123456);
        StdOut.println(MemoryUtil.memoryUsageOf(x));
        StdOut.println();
        long SIZEOFINTEGER = MemoryUtil.memoryUsageOf(x);

        TreeMap<Integer, Integer> st1 = new TreeMap<Integer, Integer>();
        StdOut.println("size of TreeMap<Integer, Integer> of given length");
        for (int i = 0; i < 8; i++) {
            Integer key = new Integer(i);
            st1.put(key, key);
            StdOut.println(i + ": " + (MemoryUtil.deepMemoryUsageOf(st1) - SIZEOFINTEGER*i));
        }
        for (int i = 8; i < N; i++) {
            Integer key = new Integer(i);
            st1.put(key, key);
        }
        StdOut.println(N + ": " + (MemoryUtil.deepMemoryUsageOf(st1) - SIZEOFINTEGER*N));
        StdOut.println();

        BST<Integer, Integer> st2 = new BST<Integer, Integer>();
        StdOut.println("size of BST<Integer, Integer> of given length");
        for (int i = 0; i < 8; i++) {
            Integer key = new Integer(i);
            st2.put(key, key);
            StdOut.println(i + ": " + (MemoryUtil.deepMemoryUsageOf(st2) - SIZEOFINTEGER*i));
        }
        for (int i = 8; i < N; i++) {
            Integer key = new Integer(i);
            st2.put(key, key);
        }
        StdOut.println(N + ": " + (MemoryUtil.deepMemoryUsageOf(st2) - SIZEOFINTEGER*N));
        StdOut.println();


        RedBlackBST<Integer, Integer> st3 = new RedBlackBST<Integer, Integer>();
        StdOut.println("size of RedBlackBST<Integer, Integer> of given length");
        for (int i = 0; i < 8; i++) {
            Integer key = new Integer(i);
            st3.put(key, key);
            StdOut.println(i + ": " + (MemoryUtil.deepMemoryUsageOf(st3) - SIZEOFINTEGER*i));
        }
        for (int i = 8; i < N; i++) {
            Integer key = new Integer(i);
            st3.put(key, key);
        }
        StdOut.println(N + ": " + (MemoryUtil.deepMemoryUsageOf(st3) - SIZEOFINTEGER*N));
        StdOut.println();

    }
                
}


Copyright © 2002–2010, Robert Sedgewick and Kevin Wayne.
Last updated: Tue Apr 5 12:44:58 EDT 2011.