T-Rex: Mehrere Fragen bezüglich mehrere Tests großer Datenmengen

Beitrag lesen

Moin,

ich hab da eine Datenmenge von 8000 Datensätze. Die lade ich einmal aus der Datenbank und unterziehe diesen verschiedene Tests. Präziser sind das diverse Berechnungen bei unterschiedlichen Gegebenheiten.

Dafür habe ich ein Array. Da stehen verschiedene Werte drin z.B. "höhe" von 1-10 oder "breite" von 1-10. Dann werden Tests und Berechnungen für alle Möglichkeiten durchgeführt. Es wird also geschaut was passiert bei höhe=1, breite=1 - was passiert bei höhe=1, breite=2 und so weiter. Bei dem hier gezeigten Beispiel sind es also 100 Tests. Vor einiger Zeit hat mein Computer ca. 9000 dieser Tests geschafft. Mittlerweile hat er bei 1000 Probleme (ich hab auch die Tests auch ordentlich aufgerüstet, sprich es wird mehr getestet). Die Ausführungszeit ist dabei gar nicht das Problem sondern der Speicherverbrauch. Bei 500MB ist Schluss.

Erstmal worum es mir NICHT geht. Ich möchte nicht die memory limit erhöhen! Es geht hier auch nicht um die Lesegeschwindigkeit der Daten aus der Datenbank. Dass passiert wie gesagt einmal und die Geschwindigkeit ist okay. Es geht auch nicht darum große Datenmengen zu handeln. Die Datenmenge ist mit 8000 Datensätze (später vielleicht bis 20.000 Datensätze) relativ klein. Also ich meine, es geht hier nicht um die Auswertung eines Datawarehouse.

Ich würde gerne wissen, wie man so viele Tests am besten handelt? Ich würde gerne noch mehr Tests machen. Eventuell auch 100.000 oder 1.000.000 gleichzeitig. Die Ausführungszeit ist dafür fast egal ... kann auch gerne über Nacht laufen. Ich habe mich mit so einem Thema nie beschäftigt und würde mich auch über jegliche Links freuen. Dennoch würde ich gerne Flaschenhälse in der Programmierung finden. Bei den Zeitlichen Komponenten schaffe ich das selbst, aber wie finde ich die stellen wo Speicher verschwendet wird, weil z.B. eine Copy eines Arrays oder eines Objektes erstellt wird und stehen bleibt?

Ich habe mir zudem überlegt jeden Test via Javascript an zu fordern. Dann müssten die Daten aber jedes Mal aus der Datenbank gelesen werden was einen sehr großen Overhead erzeugen würde. Da das System local läuft wäre die Übermittlungszeit wiederum egal. Ist das generell eine gute Idee?

Bislang habe ich eigentlich immer nur die Daten im klassischen Sinne behandelt - Webseiten Anfrage, Datenladen, bearbeiten, anzeigen.

Gruß Tausend Tester T-Rex