package com.bigdata.util; import java.nio.ByteBuffer; import java.nio.IntBuffer; import junit.framework.TestCase; public class TestHeapVsDirectByteBuffer extends TestCase { public void testSimplePerformance() { final ByteBuffer hbb = ByteBuffer.allocate(1024 * 1024); final ByteBuffer dbb = ByteBuffer.allocateDirect(1024 * 1024); final IntBuffer ihbb = hbb.asIntBuffer(); final IntBuffer idbb = dbb.asIntBuffer(); final int nints = 256 * 1024; final long t1 = System.nanoTime(); for (int i = 0; i < nints; i++) { ihbb.put(i, i); } for (int t = 0; t < 10000; t++) { for (int i = 0; i < nints; i++) { ihbb.get(i); } } final long t2 = System.nanoTime(); for (int i = 0; i < nints; i++) { idbb.put(i, i); } for (int t = 0; t < 10000; t++) { for (int i = 0; i < nints; i++) { idbb.get(i); } } final long t3 = System.nanoTime(); System.out.println(" Heap Buffer: " + (t2 - t1) + "ns"); System.out.println("Direct Buffer: " + (t3 - t2) + "ns"); } }