Tutorial
Screencast
A video describing the following steps is available at Youtube.
Step by Step Tutorial
Three steps to bench your code in Eclipse:
- Install Perfidix with Eclipse
Download latest release of Perfidix and the latest release of Perclipse (Perfidix plugin).
- Modify your code
Annotate your code you want to see benched with the Perfidix annotations. A small example can be seen below:
import static org.junit.Assert.assertEquals; import java.util.Random; import java.util.Stack; import org.junit.BeforeClass; import org.junit.Test; import org.perfidix.annotation.BeforeBenchClass; import org.perfidix.annotation.BenchClass; @BenchClass(runs = 100) public class FastIntStackTest { private static int[] data = new int[15]; @BeforeBenchClass @BeforeClass public static void beforeClass() { for (int i = 0; i < data.length; i++) { data[i] = new Random().nextInt(); } } @Test public void myStackTest() { final FastIntStack myStack = new FastIntStack(); for (int i = 0; i < data.length; i++) { myStack.push(data[i]); } for (int i = data.length - 1; i > 0; i--) { assertEquals(data[i], myStack.pop()); } } @Test public void normalStackTest() { final Stack<Integer> normalStack = new Stack<Integer>(); for (int i = 0; i < data.length; i++) { normalStack.push(data[i]); } for (int i = data.length - 1; i > 0; i--) { assertEquals(data[i], normalStack.pop().intValue()); } } final class FastIntStack { private int[] stack; private int size; FastIntStack() { stack = new int[32]; size = 0; } final void push(final int element) { if (stack.length == size) { int[] biggerStack = new int[stack.length << 1]; System.arraycopy(stack, 0, biggerStack, 0, stack.length); stack = biggerStack; } stack[size++] = element; } final int peek() { return stack[size - 1]; } final int get(final int position) { return stack[position]; } final int pop() { return stack[--size]; } final void clear() { size = 0; } final int size() { return size; } } }
- Run the bench out of Eclipse Insert the Perfidix.jar into your classpath and right-click on your project where the code to be benched is located in.