Skip to content
Snippets Groups Projects
Commit f81d2fb1 authored by NET-D3v3l0p3r's avatar NET-D3v3l0p3r
Browse files

Seltsames Verhalten: 1 Kern schneller als 4 Kern mit Queue, 4 Kern schneller...

Seltsames Verhalten: 1 Kern schneller als 4 Kern mit Queue, 4 Kern schneller als 1 Kern mit Stack...
parent 82beabdc
Branches
No related tags found
No related merge requests found
......@@ -39,7 +39,7 @@ public class Explorer {
(int) SharedRessources.getInstance().getVisitMatrix()[index]
.getZ();
if (currentStepsOnField <= steps) {
if (currentStepsOnField <= steps + SharedRessources.getEpsilon()) {
return;
}
......
......@@ -68,10 +68,7 @@ public class ParallelPathfinder {
x += dx;
y += dy;
}
return path;
}
public void draw(Graphics g) {
......@@ -81,11 +78,28 @@ public class ParallelPathfinder {
SharedRessources.getInstance().getWallMatrix()[i + j * SharedRessources.getInstance().getWidth()];
if (b) {
g.setColor(Color.blue);
} else {
Vec3 currentVec
=
SharedRessources.getInstance().getVisitMatrix()[i + j * SharedRessources.getInstance().getWidth()];
if (currentVec.getX() == 0 && currentVec.getY() == 0)
g.setColor(Color.black);
else {
int green = (int) currentVec.getZ();
if (green >= 255)
green = 255;
Color color
= new Color(0, green, 0);
g.setColor(color);
}
g.fillRect(i * 1, j * 1, 1, 1);
}
}
}
}
}
......@@ -10,14 +10,19 @@ import java.util.concurrent.LinkedBlockingQueue;
public class WorkingExplorers extends EagerWorkingThread {
private Collection<Explorer> currentWaitingExplorers;
public WorkingExplorers() {
super();
this.startListen();
System.out.println("[*] Thread initialized @" + this.getName());
}
if (SharedRessources.isUsingQueue())
currentWaitingExplorers
= new ConcurrentLinkedQueue<>();
else currentWaitingExplorers = new Stack<Explorer>();
private ConcurrentLinkedQueue<Explorer> currentWaitingExplorers = new ConcurrentLinkedQueue<Explorer>(); // suited for maze only!!!
}
@Override
public void onBegin() {
......@@ -25,10 +30,16 @@ public class WorkingExplorers extends EagerWorkingThread {
@Override
public void onTrigger() {
if (!currentWaitingExplorers.isEmpty())
currentWaitingExplorers
if (!currentWaitingExplorers.isEmpty()) {
if (SharedRessources.isUsingQueue())
((ConcurrentLinkedQueue<Explorer>) currentWaitingExplorers)
.poll()
.explore();
else ((Stack<Explorer>) currentWaitingExplorers)
.pop()
.explore();
}
}
@Override
......@@ -39,7 +50,13 @@ public class WorkingExplorers extends EagerWorkingThread {
}
public void add(Explorer explorer) {
this.currentWaitingExplorers.offer(explorer);
if (SharedRessources.isUsingQueue())
((ConcurrentLinkedQueue<Explorer>) currentWaitingExplorers)
.offer(explorer);
else ((Stack<Explorer>) currentWaitingExplorers)
.push(explorer);
this.trigger();
}
......
......@@ -19,6 +19,26 @@ public class SharedRessources {
USING_CORES = cores;
}
private static int EPSILON;
public static void setEpsilon(int epsilon) {
EPSILON = epsilon;
}
public static int getEpsilon() {
return EPSILON;
}
private static boolean USE_QUEUE;
public static void useQueue(boolean status) {
USE_QUEUE = status;
}
public static boolean isUsingQueue() {
return USE_QUEUE;
}
private static SharedRessources sharedRessources;
public static SharedRessources getInstance() {
......
......@@ -23,7 +23,10 @@ public class MainWindow extends Game {
@Override
public void loadGame() {
SharedRessources.setMaximumCores(Integer.MAX_VALUE);
SharedRessources.setMaximumCores(1);
SharedRessources.setEpsilon(0);
SharedRessources.useQueue(true);
try {
// MAZE GENERATED WITH http://www.mazegenerator.net/
MapLoader.getDefault().load(ImageIO.read(new File("examples/maze.png")));
......@@ -63,7 +66,7 @@ public class MainWindow extends Game {
g.setColor(Color.red);
for (var pt : pts) {
g.fillRect(pt.x * 1, pt.y * 1, 1, 1);
g.fillRect(pt.x - 2, pt.y - 2, 4, 4);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment