public static void main(String[] args)
    {
        final int smallSizesIters = 10;
        int initial_power_of_two_exp = 27;
        int final_power_of_two_exp = 32;
        int length = final_power_of_two_exp - initial_power_of_two_exp + 1;
        long[] smallSizes = new long[length];
        for (int i = 0; i < length; i++) {
            if (initial_power_of_two_exp + i == 31) {
                smallSizes[i] = (long) Math.pow(2, 31) - 4;
            } else {
                smallSizes[i] = (long) Math.pow(2, initial_power_of_two_exp + i);
            }
        }

        final int largeSizesIters = 2;
        initial_power_of_two_exp = 32;
        final_power_of_two_exp = 35;
        length = final_power_of_two_exp - initial_power_of_two_exp + 1;
        long[] largeSizes = new long[length];
        for (int i = 0; i < length; i++) {
            largeSizes[i] = (long) Math.pow(2, initial_power_of_two_exp + i);
        }
        int[] threads = {1, 2, 4, 8, 16};

        LargeArray.setMaxSizeOf32bitArray(1);
        benchmarkByteSequential(smallSizes, threads, smallSizesIters, "/tmp/");
        benchmarkDoubleSequential(smallSizes, threads, smallSizesIters, "/tmp/");
        benchmarkByteRandom(smallSizes, threads, smallSizesIters, "/tmp/");
        benchmarkDoubleRandom(smallSizes, threads, smallSizesIters, "/tmp/");
    }