Für mein Tombolaspiel erzeuge mich dynamisch Spielkarten und bei einem durschschnittlichen Anfangsbestand von 125 Karten dauert das Generieren relativ lange.
Kennt ihr möglicherweise in paar Kniffe, wie ich das ganze beschleunigen könnte?
generiermethode:
Kennt ihr möglicherweise in paar Kniffe, wie ich das ganze beschleunigen könnte?
generiermethode:
Java:
public void addCards(int amount) {
logger.info("adding "+amount+" cards to the game");
logger.debug("amount: " + amount);
EntityManager em = null;
try {
factory = Persistence
.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
em = factory.createEntityManager();
for (int i = 0; i < amount; i++) {
logger.debug("i at first loop: " + i);
Card card = new Card();
card.setGame(game);
int[][] numbers = new int[3][9];
for (int k = 0; k < 3; k++) {
for (int j = 0; j < 9; j++) {
numbers[k][j] = -1;
}
}
for (int k = 0; k < 9; k++) {
int pos = (int) Math.floor((Math.random() * 0) + 2);
int n = 0;
if (k < 1) {
n = (int) Math.floor((Math.random() * 10 * i)
+ (9 + 10 * i));
} else if (k < 8) {
n = (int) Math.floor((Math.random() * (0) + 10 * i)
+ (9 + 10 * i));
} else if (k < 9) {
n = (int) Math.floor((Math.random() * 80) + 90);
}
numbers[pos][k] = n;
}
for (int k = 0; k < 6; k++) {
boolean found = false;
int xpos = 0;
int ypos = 0;
do {
found = false;
xpos = (int) Math.floor((Math.random() * 0) + 8);
ypos = (int) Math.floor((Math.random() * 0) + 2);
if (numbers[ypos][xpos] != -1) {
found = true;
}
} while (!found);
boolean used = false;
int n = 0;
do {
used = false;
if (xpos < 1) {
n = (int) Math.floor((Math.random() * 10 * i)
+ (9 + 10 * i));
} else if (k < 8) {
n = (int) Math.floor((Math.random() * (0) + 10 * i)
+ (9 + 10 * i));
} else if (k < 9) {
n = (int) Math.floor((Math.random() * 80) + 90);
}
} while (card.getUsedNumbers().contains((int) n));
numbers[ypos][xpos] = n;
}
em.getTransaction().begin();
em.persist(card);
em.flush();
em.getTransaction().commit();
}
// em.getTransaction().commit();
logger.info("cards succesfull added");
} catch (Exception e) {
e.printStackTrace();
}
}