Java imperative and functional approach performance test

I love performance tests. generally I test everything myself if there is no source in the internet I must do it :)

today I was reading imperative coding vs functional coding here. it stuck my mind this sentence.

they’re probably equally fast and reasonable

then I have to try which one is faster. here is the code

package testarea;

import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Test {

	static int[] array = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 9, 10 };

	static long startTime, stopTime;

	public static void main(String[] args) {
		
		runImperative();

		runFunctional();

		runImperative();
		
		runFunctional();runFunctional();runFunctional();runFunctional();
		
		runImperative();runImperative();runImperative();runImperative();
		runFunctional();
	}

	private static void runFunctional() {
		startTime = System.nanoTime();

		functionalApproach();

		stopTime = System.nanoTime();
		System.out.println("F:"+(stopTime - startTime));
	}

	private static void runImperative() {
		startTime = System.nanoTime();

		imperativeApproach();

		stopTime = System.nanoTime();
		System.out.println("I:"+(stopTime - startTime));
	}

	private static void imperativeApproach() {
		int sum = 0;
		for (int j = 0; j < array.length; j++) {
			for (int k = j + 1; k < array.length; k++) {
				if (k != j && array[k] == array[j]) {
					sum = sum + array[k];
				}
			}
		}
	}

	private static void functionalApproach() {
		IntStream.of(array).boxed().collect(Collectors.groupingBy(i -> i)).entrySet().stream()
				.filter(e -> e.getValue().size() > 1).forEach(e -> {
					 e.getValue().stream().collect(Collectors.summingInt(i -> i));
				});
	}

}

here is my output

I:8297
F:93871512
I:6048
F:192964
F:165003
F:164852
F:158849
I:5988
I:5681
I:5805
I:5740
F:159416

as you see imperative coding kick ass. and in my mind its easy to understand. I know it does not look beautiful like functional. still it works and far faster then functional. just saying :)