Geschwindigkeit beim Generieren erhöhen?

Templarthelast

Bekanntes Mitglied
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:

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

Gast2

Gast
Wie lange dauert das? Was GENAU dauert am längsten? Könnte man den Teil vielleicht beschleunigen?
 
S

Spacerat

Gast
Also das Erste, was man wegrationalisieren kann sind Geschichten wie "(Math.random() * 0) + X", weil das Ergebnis ist X. Das 2 dimensionale Array number macht mir auch Sorgen, weil es immer neu instanziert wird, aber anscheinend nur zum überwachen des Kartenstosses dient. könnte man in ein finales eindimensionales Array (Klassenvariable) umwandeln, welches man dann synchronisiert. Der Zugriff geschieht dann über "Zeile * numSpalten + Spalte", das Initialisieren über "Arrays.fill(numbers, -1)".
Davon mal ab... was soll diese methode denn machen? Die Karten gleich mischen?
 
Zuletzt bearbeitet von einem Moderator:

Marco13

Top Contributor
WTFIT? Also, was genau wird da erzeugt? Karten mit welchen Eigenschaften? Irgendwie habe ich das Gefühl, dass man das auch mit 5 Zeilen schreiben könnte. Und insbesondere: Was genau dieser EntityManager macht, weiß ich nicht (kein Plan von EE), aber was auch immer damit gemacht wird: Es soltle unabhängig von der Erzeugung der Karten sein. Mach' dir zwei getrennte Methoden, mit denen du sowas machen kannst wie
Java:
List<Card> cards = createCards();
parsistCards(cards);
 

Templarthelast

Bekanntes Mitglied
Danke schonmal für den Input. Ich habe jetzt mal die einzelnen Arbeitsschritte geloggt und die Datenübertragung braucht ca ~ 670ms während die ganzen anderen Prozesse zusammen innerhalb von 1-2 ms erledigt werden.

Code:
2012-08-04 21:35:22,751 DEBUG [main] root: start -1 zuweisen
2012-08-04 21:35:22,751 DEBUG [main] root: ende -1 zuweisung und start der ersten 9
2012-08-04 21:35:22,751 DEBUG [main] root: ende der ersten 9 und start der nächsten 6
2012-08-04 21:35:22,751 DEBUG [main] root: ende der anderen 6 und start der datenbankübertragung
2012-08-04 21:35:23,422 DEBUG [main] root: ende der datenbankübertragung
 

tribalup

Bekanntes Mitglied
Dann wäre es wohl am einfachsten, die Karten komplett zu erzeugen und dann in einem Schritt zu verwschicken.
So sparst du dir für dein beispiel über 80 Sekunden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
S Geschwindigkeit HashMap oder .getParent Allgemeine Java-Themen 5
byte JMockit - Geschwindigkeit Allgemeine Java-Themen 7
B Verzeichnis durchsuchen geschwindigkeit optimieren Allgemeine Java-Themen 6
R Parser: Datei auslesen, Datei erstellen - Geschwindigkeit Allgemeine Java-Themen 16
G java spiel (geschwindigkeit) Allgemeine Java-Themen 37
F Geschwindigkeit messen Allgemeine Java-Themen 7
E Geschwindigkeit static Allgemeine Java-Themen 6
O RXTX Geschwindigkeit? Codebeispiel dabei. Allgemeine Java-Themen 21
P Geschwindigkeit von Java GUIs Allgemeine Java-Themen 45
J Http/Https Geschwindigkeit Allgemeine Java-Themen 14
B java geschwindigkeit Allgemeine Java-Themen 16
O Geschwindigkeit Fortran und Java Allgemeine Java-Themen 11
J JCopy & Geschwindigkeit? Allgemeine Java-Themen 4
A Geschwindigkeit Java unter Linux Allgemeine Java-Themen 9
M Geschwindigkeit RXTX JAVA Allgemeine Java-Themen 3
N Performance-Test (Geschwindigkeit von Methoden vergleichen)? Allgemeine Java-Themen 4
P Geschwindigkeit und Genauigkeit bei Zeitmessung Allgemeine Java-Themen 13
T Geschwindigkeit bei Polygonen und BufferedImage Allgemeine Java-Themen 9
R Geschwindigkeit herausfinden Allgemeine Java-Themen 2
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
A Zweite Service Klasse beim Kompilieren Allgemeine Java-Themen 6
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
B Stringmanipulationen beim Dateinamen Allgemeine Java-Themen 8
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
J Mein Frame friert ein beim Uploaden Allgemeine Java-Themen 4
P Selenium Scriipt zeigt Fehler beim Import Allgemeine Java-Themen 3
A Hilfe beim Verständnis Allgemeine Java-Themen 16
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
B Compiler-Fehler Probleme beim Kompilieren mit Jsoup Allgemeine Java-Themen 8
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
yakazuqi Fehler beim Laden. JDA (Java Discord API) Allgemeine Java-Themen 1
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
U Fehler beim Compillieren Allgemeine Java-Themen 13
B neuroph hält beim XOR lernen nicht an Allgemeine Java-Themen 13
bueseb84 Fehler beim Import von Maven Dependencies aus lokalem artifactory Allgemeine Java-Themen 2
J Jasper Report - seltame Meldung beim compilieren Allgemeine Java-Themen 3
J Linux .jar beim Start automatisch ausführen Allgemeine Java-Themen 6
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
L Compiler-Fehler Generics beim Anhängen von Predicates Allgemeine Java-Themen 1
J WARNING: An illegal reflective access operation has occurred, beim Compilieren von JasperReports, was bedeutet das ? Allgemeine Java-Themen 23
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
C Fehler beim Debuggen von Listen Allgemeine Java-Themen 4
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
B Input/Output Probleme beim Ausführen von Shell-Befehlen mit Java Allgemeine Java-Themen 28
J Probleme beim einbinden von Zip4j library Allgemeine Java-Themen 6
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11
S Seitenausrichtung beim Drucken Allgemeine Java-Themen 1
RalleYTN Brauche Hilfe beim Run-Length-Decoding Allgemeine Java-Themen 9
R Optimierung beim Vergleichen von 2 Bildern Allgemeine Java-Themen 23
F SQLite mit Java / Probleme beim INSERT Befehl Allgemeine Java-Themen 4
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
S Eclipse Probleme beim Implementieren / Ausführen von jUnit 5-Test Suites Allgemeine Java-Themen 14
M Beim Öffnen Dialog Directory und Filetype definieren Allgemeine Java-Themen 2
G Problem beim GUI Allgemeine Java-Themen 9
A Probleme beim Verstehen einer Aufgabenstellung Allgemeine Java-Themen 11
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
J Konstruktor in JSP beim Kompilieren nicht gefunden Allgemeine Java-Themen 3
perlenfischer1984 Probleme beim Mocken Allgemeine Java-Themen 6
A Fehler beim Aktualisieren JTable Allgemeine Java-Themen 1
D Pivot-Wahl beim QuickSort steigert die Effizienz, eine Lüge??? Allgemeine Java-Themen 17
J-Gallus Erste Schritte Wahrscheinlich Anfänger Fehler beim rechnen. Falsches Ergebnis. Allgemeine Java-Themen 9
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
Fischkralle Beim Clean Coden an den Schnittstellen geschnitten. Allgemeine Java-Themen 10
H Beim Konstruktor "this" Allgemeine Java-Themen 4
I Problem beim Aufrufen, von Objektmethoden/ -variablen Allgemeine Java-Themen 6
J Interpreter-Fehler Fehler beim Verschlüsseln Invalid AES key length Allgemeine Java-Themen 1
R probleme beim starten von jar unter linux Allgemeine Java-Themen 2
Thallius Swing Merkwürdiges Verhalten beim Panel Tausch Allgemeine Java-Themen 3
Tacofan Sound beim öffnen der GUI Allgemeine Java-Themen 8
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
B Endlosschleife beim Verteilen von Objekten Allgemeine Java-Themen 4
V JavaFX Fehler beim Starten einer Jar Allgemeine Java-Themen 7
B Fortschritt beim Schreiben einer Datei ausgeben lassen Allgemeine Java-Themen 7
J JDK installieren Das Jdk funtioniert beim Editor nicht. Allgemeine Java-Themen 3
R Verdrückt beim Sicherheitshinweis Allgemeine Java-Themen 2
M Probleme beim rechnen, bei Zahlen mit führenden Nullen. Allgemeine Java-Themen 7
javampir Input/Output Effizienz beim binären Lesen einer Datei Allgemeine Java-Themen 6
javampir Seltsame Lücken beim Abspielen von Sound Allgemeine Java-Themen 2
RalleYTN JAnsi Warum bleiben die Hintergrundfarben beim Reseten der Konsole? Allgemeine Java-Themen 0
T BufferedImage verändert sich beim Einlsesen Allgemeine Java-Themen 1
E JCuda-0.6.5 Probleme beim ausführen der Datei Allgemeine Java-Themen 0
S Verständnisproblem beim Mocking Allgemeine Java-Themen 8
W JNDI - LDAP - Probleme beim editieren von Usern Allgemeine Java-Themen 0
Athena Programm funktioniert nur beim Debugging korrekt, sonst nicht. Allgemeine Java-Themen 1
N Zahlensysteme umrechnen; Probleme beim Umwandeln Allgemeine Java-Themen 4
K Fehler beim erstellen von .jar Datei Allgemeine Java-Themen 3
M Eclipse Fehler beim Installieren des Plugins "Jigloo" Allgemeine Java-Themen 12

Ähnliche Java Themen

Neue Themen


Oben