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);
}
}