@@ -12,6 +12,15 @@ void scale(int i, double* a, double* b) {
12
12
a[i]=4 *b[i];
13
13
}
14
14
15
+ struct A {
16
+
17
+ void scale (int i, double * a, double * b) {
18
+ a[i]=4 *b[i];
19
+ }
20
+
21
+ int x = 1 ;
22
+
23
+ };
15
24
int main () {
16
25
17
26
ThreadPool pool (8 );
@@ -27,17 +36,28 @@ int main () {
27
36
28
37
int ntrials = 10 ;
29
38
double tperformance = 0.0 ;
39
+ cout << " Callable: c-function pointer\n " ;
30
40
for (int i=0 ; i<ntrials; i++)
31
41
{
32
- Timer timer ([&](int elapsed){
33
- cout << " Trial " << i << " : " << elapsed*1e-6 << " ms\n " ;
34
- tperformance+=elapsed;
35
- });
36
- pool.ParallelFor (0 ,N,scale,a,b);
42
+ Timer timer ([&](int elapsed){
43
+ cout << " Trial " << i << " : " << elapsed*1e-6 << " ms\n " ;
44
+ tperformance+=elapsed;
45
+ });
46
+ pool.ParallelFor (0 ,N,scale,a,b);
37
47
}
38
48
cout << " Average: " << tperformance*1e-6 / ntrials << " ms\n\n " ;
39
49
40
-
50
+ tperformance = 0.0 ;
51
+ cout << " Callable: lambda function (without capture) \n " ;
52
+ for (int i=0 ; i<ntrials; i++)
53
+ {
54
+ Timer timer ([&](int elapsed){
55
+ cout << " Trial " << i << " : " << elapsed*1e-6 << " ms\n " ;
56
+ tperformance+=elapsed;
57
+ });
58
+ pool.ParallelFor (0 ,N,[](int k, double * a, double * b) {return a[k] = 4 *b[k];},a,b);
59
+ }
60
+ cout << " Average: " << tperformance*1e-6 / ntrials << " ms\n\n " ;
41
61
42
62
return 0 ;
43
63
}
0 commit comments