@Test
    public void testArrayListLong() {
        long minTime = Long.MAX_VALUE;
        long maxTime = Long.MIN_VALUE;
        long avgTime = 0;
        long beforeTime = 0;
        long afterTime = 0;
        long curTime = 0;
        Random random = new Random();
        int value;

        AbstractProcessor<Long> processor = new ValueFrequencyArrayOptimizedProcessor();
        //warm up
        value = random.nextInt(255);
        beforeTime = System.nanoTime();
        result = processor.process(value + 1);
        afterTime = System.nanoTime();

        for (int i = 1; i < MAX_CYCLES; i++) {
            value = random.nextInt(255);
            beforeTime = System.nanoTime();
            result = processor.process(value + 1);
            afterTime = System.nanoTime();
            curTime = afterTime - beforeTime;
            avgTime = (avgTime + curTime) / 2;
            if (i % DISPLAY_TIME == 0) {
                maxTime = (avgTime > maxTime) ? avgTime : maxTime;
                minTime = (avgTime < minTime) ? avgTime : minTime;
                stringBuilder.append(String.format("Time: \t avg: %1$8dns\t min: %2$8dns\t max: %3$8dns\n", avgTime, minTime, maxTime));
                avgTime = curTime;
            }
        }

    }