Ich habe Code wie dieser (Pseudo-Code, weil ich nicht mein Programm zeigen kann):parallel_for ppl.h nicht schneller als sequenzielle C++
concurrent_vector a, b, c;
concurrent_unordered_map mapForResult;
for(i=0; i<sequenceCount; i++){
variables temp_a, temp_b, temp_c;
database->read(&a, &b, &c);
}
parallel_for(0, sequenceCount, [](int i){
var aa = a[i];
var bb = b[i];
var cc = c[i];
resultOfFunction = MakeFunction(aa, bb, cc);
mapForResults.insert(resultOfFunction);
}, static_partitioner());
Es funktioniert, aber es ist viel langsamer als sequentielle Version. Irgendwelche Ideen warum? Es ist mein erstes Mal mit ppl.h, also kenne ich nicht alle Tipps & Tricks.
Wie verhält sich der Cache zwischen den beiden Loops? Erhalten Sie in der parallelen Version viele Cache-Fehler? – NathanOliver
Wie kann ich es verifizieren? Ich bin Anfänger in C++ und Parallelen. – Queen
Nun, wenn Sie unter Linux sind, können Sie [perf] (http://stackoverflow.com/a/10114325/4342498) verwenden. – NathanOliver