Two things:
10000
not much on a modern computer. Therefore, this loop will probably work less than a millisecond - less precision clock()
. Therefore, it will return zero.
If you are not using the non_parallel
result, it is possible that the entire loop will be optimized by the compiler.
Most likely, you just need a more expensive cycle. Try increasing ARRAY_SIZE
by something more.
Here is a test on my machine with a large array size:
#define ARRAY_SIZE 100000000 int main(){ clock_t start, end; double *non_parallel = (double*)malloc(ARRAY_SIZE * sizeof(double)); double *vec = (double*)malloc(ARRAY_SIZE * sizeof(double)); start = clock(); for(int i = 0; i < ARRAY_SIZE; i++) { non_parallel[i] = vec[i] * vec[i]; } end = clock(); printf( "Number of seconds: %f\n", (end-start)/(double)CLOCKS_PER_SEC ); free(non_parallel); free(vec); return 0; }
Conclusion:
Number of seconds: 0.446000
source share