197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes/*
297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes * Copyright (C) 2010 Google Inc.
397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes *
497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes * Licensed under the Apache License, Version 2.0 (the "License");
597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes * you may not use this file except in compliance with the License.
697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes * You may obtain a copy of the License at
797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes *
897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0
997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes *
1097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes * Unless required by applicable law or agreed to in writing, software
1197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
1297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes * See the License for the specific language governing permissions and
1497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes * limitations under the License.
1597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes */
1697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
1797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughespackage benchmarks.regression;
1897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
1997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughesimport com.google.caliper.Param;
2097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughesimport com.google.caliper.Runner;
2197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughesimport com.google.caliper.SimpleBenchmark;
2297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
2397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughesimport java.io.*;
2497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughesimport java.nio.*;
2597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughesimport java.nio.channels.*;
2697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughesimport java.util.Arrays;
2797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughesimport java.util.Collection;
2897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
2997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughespublic class ByteBufferBenchmark extends SimpleBenchmark {
3097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public enum MyByteOrder {
3197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        BIG(ByteOrder.BIG_ENDIAN), LITTLE(ByteOrder.LITTLE_ENDIAN);
3297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        final ByteOrder byteOrder;
3397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        MyByteOrder(ByteOrder byteOrder) {
3497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            this.byteOrder = byteOrder;
3597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
3697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
3797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
3897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    @Param private MyByteOrder byteOrder;
3997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
4097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    @Param({"true", "false"}) private boolean aligned;
4197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
4297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    enum MyBufferType {
4397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        DIRECT, HEAP, MAPPED;
4497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
4597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    @Param private MyBufferType bufferType;
4697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
4797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public static ByteBuffer newBuffer(MyByteOrder byteOrder, boolean aligned, MyBufferType bufferType) throws IOException {
4897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        int size = aligned ? 8192 : 8192 + 8 + 1;
4997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer result = null;
5097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        switch (bufferType) {
5197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        case DIRECT:
5297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            result = ByteBuffer.allocateDirect(size);
5397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            break;
5497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        case HEAP:
5597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            result = ByteBuffer.allocate(size);
5697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            break;
5797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        case MAPPED:
5897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            File tmpFile = new File("/sdcard/bm.tmp");
5997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            if (new File("/tmp").isDirectory()) {
6097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                // We're running on the desktop.
6197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                tmpFile = File.createTempFile("MappedByteBufferTest", ".tmp");
6297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
6397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            tmpFile.createNewFile();
6497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            tmpFile.deleteOnExit();
6597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            RandomAccessFile raf = new RandomAccessFile(tmpFile, "rw");
6697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            raf.setLength(8192*8);
6797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            FileChannel fc = raf.getChannel();
6897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            result = fc.map(FileChannel.MapMode.READ_WRITE, 0, fc.size());
6997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            break;
7097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
7197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        result.order(byteOrder.byteOrder);
7297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        result.position(aligned ? 0 : 1);
7397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        return result;
7497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
7597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
7697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    //
7797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    // peeking
7897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    //
7997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
8097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_getByte(int reps) throws Exception {
8197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
8297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
8397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
8497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
8597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.get();
8697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
8797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
8897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
8997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
9097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_getByteArray(int reps) throws Exception {
9197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
9297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        byte[] dst = new byte[1024];
9397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
9497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
9597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.position(aligned ? 0 : 1);
9697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.get(dst);
9797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
9897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
9997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
10097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
10197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_getByte_indexed(int reps) throws Exception {
10297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
10397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
10497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
10597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
10697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.get(i);
10797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
10897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
10997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
11097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
11197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_getChar(int reps) throws Exception {
11297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
11397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
11497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
11597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
11697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.getChar();
11797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
11897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
11997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
12097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
12197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeCharBuffer_getCharArray(int reps) throws Exception {
12297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        CharBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType).asCharBuffer();
12397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        char[] dst = new char[1024];
12497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
12597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
12697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.position(0);
12797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.get(dst);
12897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
12997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
13097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
13197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
13297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_getChar_indexed(int reps) throws Exception {
13397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
13497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
13597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
13697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
13797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.getChar(i * 2);
13897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
13997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
14097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
14197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
14297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_getDouble(int reps) throws Exception {
14397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
14497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
14597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
14697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
14797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.getDouble();
14897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
14997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
15097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
15197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
15297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeDoubleBuffer_getDoubleArray(int reps) throws Exception {
15397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        DoubleBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType).asDoubleBuffer();
15497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        double[] dst = new double[1024];
15597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
15697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
15797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.position(0);
15897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.get(dst);
15997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
16097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
16197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
16297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
16397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_getFloat(int reps) throws Exception {
16497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
16597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
16697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
16797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
16897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.getFloat();
16997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
17097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
17197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
17297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
17397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeFloatBuffer_getFloatArray(int reps) throws Exception {
17497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        FloatBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType).asFloatBuffer();
17597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        float[] dst = new float[1024];
17697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
17797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
17897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.position(0);
17997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.get(dst);
18097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
18197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
18297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
18397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
18497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_getInt(int reps) throws Exception {
18597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
18697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
18797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
18897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
18997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.getInt();
19097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
19197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
19297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
19397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
19497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeIntBuffer_getIntArray(int reps) throws Exception {
19597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        IntBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType).asIntBuffer();
19697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        int[] dst = new int[1024];
19797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
19897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
19997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.position(0);
20097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.get(dst);
20197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
20297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
20397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
20497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
20597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_getLong(int reps) throws Exception {
20697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
20797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
20897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
20997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
21097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.getLong();
21197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
21297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
21397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
21497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
21597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeLongBuffer_getLongArray(int reps) throws Exception {
21697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        LongBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType).asLongBuffer();
21797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        long[] dst = new long[1024];
21897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
21997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
22097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.position(0);
22197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.get(dst);
22297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
22397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
22497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
22597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
22697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_getShort(int reps) throws Exception {
22797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
22897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
22997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
23097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
23197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.getShort();
23297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
23397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
23497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
23597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
23697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeShortBuffer_getShortArray(int reps) throws Exception {
23797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ShortBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType).asShortBuffer();
23897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        short[] dst = new short[1024];
23997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
24097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
24197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.position(0);
24297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.get(dst);
24397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
24497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
24597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
24697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
24797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    //
24897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    // poking
24997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    //
25097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
25197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_putByte(int reps) throws Exception {
25297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
25397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
25497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(0);
25597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
25697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.put((byte) 0);
25797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
25897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
25997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
26097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
26197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_putByteArray(int reps) throws Exception {
26297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer dst = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
26397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        byte[] src = new byte[1024];
26497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
26597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
26697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.position(aligned ? 0 : 1);
26797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.put(src);
26897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
26997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
27097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
27197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
27297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_putChar(int reps) throws Exception {
27397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
27497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
27597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
27697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
27797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.putChar(' ');
27897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
27997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
28097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
28197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
28297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeCharBuffer_putCharArray(int reps) throws Exception {
28397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        CharBuffer dst = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType).asCharBuffer();
28497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        char[] src = new char[1024];
28597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
28697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
28797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.position(0);
28897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.put(src);
28997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
29097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
29197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
29297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
29397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_putDouble(int reps) throws Exception {
29497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
29597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
29697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
29797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
29897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.putDouble(0.0);
29997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
30097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
30197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
30297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
30397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeDoubleBuffer_putDoubleArray(int reps) throws Exception {
30497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        DoubleBuffer dst = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType).asDoubleBuffer();
30597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        double[] src = new double[1024];
30697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
30797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
30897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.position(0);
30997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.put(src);
31097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
31197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
31297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
31397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
31497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_putFloat(int reps) throws Exception {
31597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
31697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
31797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
31897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
31997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.putFloat(0.0f);
32097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
32197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
32297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
32397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
32497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeFloatBuffer_putFloatArray(int reps) throws Exception {
32597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        FloatBuffer dst = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType).asFloatBuffer();
32697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        float[] src = new float[1024];
32797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
32897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
32997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.position(0);
33097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.put(src);
33197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
33297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
33397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
33497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
33597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_putInt(int reps) throws Exception {
33697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
33797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
33897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
33997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
34097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.putInt(0);
34197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
34297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
34397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
34497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
34597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeIntBuffer_putIntArray(int reps) throws Exception {
34697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        IntBuffer dst = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType).asIntBuffer();
34797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        int[] src = new int[1024];
34897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
34997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
35097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.position(0);
35197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.put(src);
35297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
35397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
35497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
35597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
35697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_putLong(int reps) throws Exception {
35797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
35897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
35997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
36097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
36197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.putLong(0L);
36297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
36397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
36497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
36597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
36697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeLongBuffer_putLongArray(int reps) throws Exception {
36797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        LongBuffer dst = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType).asLongBuffer();
36897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        long[] src = new long[1024];
36997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
37097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
37197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.position(0);
37297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.put(src);
37397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
37497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
37597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
37697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
37797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeByteBuffer_putShort(int reps) throws Exception {
37897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ByteBuffer src = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType);
37997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
38097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            src.position(aligned ? 0 : 1);
38197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
38297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                src.putShort((short) 0);
38397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
38497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
38597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
38697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
38797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void timeShortBuffer_putShortArray(int reps) throws Exception {
38897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        ShortBuffer dst = ByteBufferBenchmark.newBuffer(byteOrder, aligned, bufferType).asShortBuffer();
38997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        short[] src = new short[1024];
39097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
39197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            for (int i = 0; i < 1024; ++i) {
39297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.position(0);
39397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes                dst.put(src);
39497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            }
39597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
39697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
39797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
39897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes/*
39997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void time_new_byteArray(int reps) throws Exception {
40097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
40197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            byte[] bs = new byte[8192];
40297aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
40397aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
40497aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes
40597aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    public void time_ByteBuffer_allocate(int reps) throws Exception {
40697aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        for (int rep = 0; rep < reps; ++rep) {
40797aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes            ByteBuffer bs = ByteBuffer.allocate(8192);
40897aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes        }
40997aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    }
41097aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes    */
41197aba27f961a5a6f37dcaf7f455df371e250ede3Elliott Hughes}
412