私は宿題のために生産者/消費者の問題を実装しています。逐次アルゴリズムと並列アルゴリズムを比較する必要があります。私の並列アルゴリズムは、順次アルゴリズムと同じ速度または遅い速度でしか実行できないようです。キューの使用は制限要因であり、アルゴリズムの速度は向上しないという結論に達しました。
これは事実ですか、それともコーディングが間違っているだけですか?
int main() {
long sum = 0;
unsigned long serial = ::GetTickCount();
for(int i = 0; i < test; i++){
enqueue(rand()%54354);
sum+= dequeue();
}
printf("%d \n",sum);
serial = (::GetTickCount() - serial);
printf("Serial Program took: %f seconds\n", serial * .001);
sum = 0;
unsigned long omp = ::GetTickCount();
#pragma omp parallel for num_threads(128) default(shared)
for(int i = 0; i < test; i++){
enqueue(rand()%54354);
sum+= dequeue();
}
#pragma omp barrier //joins all threads
omp = (::GetTickCount() - omp);
printf("%d \n",sum);
printf("OpenMP Program took: %f seconds\n", omp * .001);
getchar();
}