#include <qtest.h>#include <omp.h>class TestBenchmark : public QObject{ Q_OBJECT void func() {}private slots: void simple2(); void simple2_omp(); void simple4(); void simple4_omp();};#define MAX_K 100000000void TestBenchmark::simple2(){ long i, j; QBENCHMARK_ONCE { for (i = 0; i < MAX_K; i++) { for (j = 0; j < 5; j++){ func(); func(); } } }}void TestBenchmark::simple2_omp(){ long i, j; QBENCHMARK_ONCE { #pragma omp parallel for private(i, j, sum) for (i = 0; i < MAX_K; i++) { for (j = 0; j < 5; j++){ func(); func(); } } }}void TestBenchmark::simple4(){ long i, j; QBENCHMARK_ONCE { for (i = 0; i < MAX_K; i++) { for (j = 0; j < 10; j++){ func(); } } }}void TestBenchmark::simple4_omp(){ long i, j; QBENCHMARK_ONCE { #pragma omp parallel for private(i, j, sum) for (i = 0; i < MAX_K; i++) { for (j = 0; j < 10; j++){ func(); } } }}QTEST_MAIN(TestBenchmark)#include "main.moc"
void TestBenchmark::simple3(){ long k, i, j; QBENCHMARK_ONCE { for (i = 0; i < MAX_K; i++) { for (k = 0; k < 5; k++) func(); for (j = 0; j < 5; j++) func(); } }}void TestBenchmark::simple3_omp(){ long k, i, j; QBENCHMARK_ONCE { #pragma omp parallel for private(i, j, k) for (i = 0; i < MAX_K; i++) { for (k = 0; k < 5; k++) func(); for (j = 0; j < 5; j++) func(); } }}