Squicky
Lt. Commander
- Registriert
- Sep. 2002
- Beiträge
- 1.422
Hallo zusammen
PowerShell:
Es gibt zwei Arrays. In beiden Arrays befinden sich Objekte.
ProdukteArray: In diesem Array befinden sich ca. 20.000 Objekte der Klasse Produkt.
Die Klasse Produkt hat mehre Eigenschaften / Attribute.
Ein String-Attribute ist "id" und ist ein Schlüssel.
Die Produkt-Objekte in diesem ProdukteArray sind nicht (nach id) sortiert.
AuftraegeArray: In diesem Array befinden sich ca. 3.000 Objekte der Klasse Auftrag.
Die Klasse Auftraghat mehre Eigenschaften / Attribute.
Es gibt ein String-Attribute "ProduktId" in der Klasse Auftrag.
Nun müssen alle Auftraege bearbeitet werden. Hierfür wird das AuftraegeArray in einer Schleife durchlaufen:
In der 3. Zeile wird das Produkte des Auftrages aus dem ProdukteArray herausgesucht. Diese Zeile braucht ca. 1 Sekunde und ist für eine sehr hoch Laufzeit der Schleife verantwortlich.
Meine Optimierungs-Idee ist:
1. Schritt: Produtke im ProdukteArray nach id sortieren.
2. Schritt: Zugriff auf das richtige Produkt aus dem ProdukteArray per Binäre-Suche.
Lösung für Schritt 1: $ProdukteArray = $ProdukteArray | Sort-Object -Property id
Für Schritt 2 habe ich noch kein cmdlet gefunden. :-(
Wer kann mir da helfen?
Danke
PowerShell:
Es gibt zwei Arrays. In beiden Arrays befinden sich Objekte.
ProdukteArray: In diesem Array befinden sich ca. 20.000 Objekte der Klasse Produkt.
Die Klasse Produkt hat mehre Eigenschaften / Attribute.
Ein String-Attribute ist "id" und ist ein Schlüssel.
Die Produkt-Objekte in diesem ProdukteArray sind nicht (nach id) sortiert.
AuftraegeArray: In diesem Array befinden sich ca. 3.000 Objekte der Klasse Auftrag.
Die Klasse Auftraghat mehre Eigenschaften / Attribute.
Es gibt ein String-Attribute "ProduktId" in der Klasse Auftrag.
Nun müssen alle Auftraege bearbeitet werden. Hierfür wird das AuftraegeArray in einer Schleife durchlaufen:
Code:
Foreach ($Auftrag in $AuftraegeArray) {
$Produkt = $ProdukteArray | ? {$_.id -eq $Auftrag.ProduktId }
# …. Auftrag bearbeiten
}
In der 3. Zeile wird das Produkte des Auftrages aus dem ProdukteArray herausgesucht. Diese Zeile braucht ca. 1 Sekunde und ist für eine sehr hoch Laufzeit der Schleife verantwortlich.
Meine Optimierungs-Idee ist:
1. Schritt: Produtke im ProdukteArray nach id sortieren.
2. Schritt: Zugriff auf das richtige Produkt aus dem ProdukteArray per Binäre-Suche.
Lösung für Schritt 1: $ProdukteArray = $ProdukteArray | Sort-Object -Property id
Für Schritt 2 habe ich noch kein cmdlet gefunden. :-(
Wer kann mir da helfen?
Danke