Written by Anonymous

import org.sikuli.script.*;
import java.util.ArrayList;
import java.util.List;

class PatternFinder implements Runnable {
    private final Object pattern;
    private final Region region;

    public PatternFinder(Object pattern, Region region){
        this.pattern = pattern;
        this.region = region;
    }
    @Override
    public void run() {
        region.has(pattern, 0);
    }
}

public class SikuliTest {
    public static void main(String[] args) {
        long test_start;
        ImagePath.add("SikuliTest/patterns/");

        // patterns
        List<Object> patterns = new ArrayList<>();
        patterns.add(new Pattern("pattern1.png"));
        patterns.add(new Pattern("pattern2.png"));
        patterns.add(new Pattern("pattern3.png"));
        patterns.add(new Pattern("pattern4.png"));
        patterns.add(new Pattern("pattern5.png"));
        patterns.add(new Pattern("pattern6.png"));

        // test_region
        Region test_region = new Region(0, 0, 1024, 768);
        test_region.setAutoWaitTimeout(0);

        // TEST 1
        test_start = System.currentTimeMillis();
        for (Object pattern : patterns) {
            test_region.has(pattern,0);
        }
        System.out.printf("Test 1 took: %d ms\n", System.currentTimeMillis() - test_start);

        // TEST 2
        test_start = System.currentTimeMillis();
        test_region.findAnyList(patterns);
        System.out.printf("Test 2 took: %d ms\n", System.currentTimeMillis() - test_start);

        // TEST 3
        test_start = System.currentTimeMillis();
        List<PatternFinder> pattern_finders = new ArrayList<>();
        for (Object pattern : patterns) {
            pattern_finders.add(new PatternFinder(pattern, test_region));
        }
        List<Thread> threads = new ArrayList<>();
        for (PatternFinder pattern_finder : pattern_finders) {
            Thread thread = new Thread(pattern_finder);
            threads.add(thread);
            thread.start();
        }
        try {
            for (Thread thread : threads) thread.join();
        } catch (InterruptedException e){
            e.printStackTrace();
        }
        System.out.printf("Test 3 took: %d ms\n", System.currentTimeMillis() - test_start);
    }
}
Notepad
Select All