Guten Tag,
ich möchte mich mit Parallel Streams auseinandersetzen. Parallel Streams ist im Vergleich zu Sequential zu langsam
Output von Parallel Stream:
File length: 258886
START:
Verlaufszeit der Schleife: 127 Millisek.
Materials: 216593
Crossreference: 7695
Erp_Mark: 34598
Dokuinfosatz: 0
Size: 258886
__________________
Output von Sequential:
File length: 258886
START:
Verlaufszeit der Schleife: 47 Millisek.
Materials: 216593
Crossreference: 7695
Erp_Mark: 34598
Dokuinfosatz: 0
Size: 258886
Ich dachte immer, dass Sequential Streams schneller ist als Sequential: Oder ich mache etwas falsch?
Vielen Dank im Voraus
ich möchte mich mit Parallel Streams auseinandersetzen. Parallel Streams ist im Vergleich zu Sequential zu langsam
Java:
public class Test {
static List<File> materials = new ArrayList<>();
static List<File> erp_mark = new ArrayList<>();
static List<File> crossreference = new ArrayList<>();
static List<File> dokuinfosatz = new ArrayList<>();
public static void main(String[] args) throws InterruptedException {
File file = new File("C:\\Users\\IdeaProjects\\XMLDateien\\xml");
File[] files = file.listFiles();
System.out.println("File length: " + files.length);
System.out.println("START: ");
final long timeStart = System.currentTimeMillis();
// seq(files);
parallel(files);
final long timeEnd = System.currentTimeMillis();
System.out.println("Verlaufszeit der Schleife: " + (timeEnd - timeStart) + " Millisek.");
System.out.println("Materials: " + materials.size());
System.out.println("Crossreference: " + crossreference.size());
System.out.println("Erp_Mark: " + erp_mark.size());
System.out.println("Dokuinfosatz: " + dokuinfosatz.size());
System.out.println("Size: " + (materials.size() + crossreference.size() + erp_mark.size() + dokuinfosatz.size()));
}
private static void seq(File[] files) {
//Heruntergeladene Dateienw werden in verschiedene Containers aufgeteilt
for (File f : files) {
if (f.getName().startsWith("Material")) {
materials.add(f);
} else if (f.getName().startsWith("ERP_MARKE")) {
erp_mark.add(f);
} else if (f.getName().startsWith("Crossreference")) {
crossreference.add(f);
} else {
dokuinfosatz.add(f);
}
}
}
private static void parallel(File[] files) {
materials = Arrays.asList(files).parallelStream().filter(f -> f.getName().startsWith("Material")).collect(Collectors.toList());
erp_mark = Arrays.asList(files).parallelStream().filter(f -> f.getName().startsWith("ERP_MARKE")).collect(Collectors.toList());
crossreference = Arrays.asList(files).parallelStream().filter(f -> f.getName().startsWith("Crossreference")).collect(Collectors.toList());
}
}
Output von Parallel Stream:
File length: 258886
START:
Verlaufszeit der Schleife: 127 Millisek.
Materials: 216593
Crossreference: 7695
Erp_Mark: 34598
Dokuinfosatz: 0
Size: 258886
__________________
Output von Sequential:
File length: 258886
START:
Verlaufszeit der Schleife: 47 Millisek.
Materials: 216593
Crossreference: 7695
Erp_Mark: 34598
Dokuinfosatz: 0
Size: 258886
Ich dachte immer, dass Sequential Streams schneller ist als Sequential: Oder ich mache etwas falsch?
Vielen Dank im Voraus