/* Last edited on 2009-02-10 09:04:48 by stolfi */ /* Compares the speed of returning a "struct" result versus using a VAR return argument. */ #include #define N 2 typedef struct RN { double c[N]; } RN; void init(RN *x); RN add_res(RN x, RN y); void add_var(RN *x, RN *y, RN *res); void test_res(int n); void test_var(int n); int main(int argc, char **argv); void init(RN *x) { int i; for(i = 0; i < N; i++) { x->c[i] = (double)(i+1); } } RN add_res(RN x, RN y) { RN res; int i; for(i = 0; i < N; i++) { res.c[i] = x.c[i] + y.c[i]; } return res; } void add_var(RN *x, RN *y, RN *res) { int i; for(i = 0; i < N; i++) { res->c[i] = x->c[i] + y->c[i]; } } void test_res(int n) { int i; RN x, y, z, t; printf("method: res\n"); init(&x); init(&y); init(&z); init(&t); for (i=0; i