TimP wrote:


So it is indeed doing dynamic linking. Maybe passing shared objects to gcc implicitly tells it to link them dynamically, but I've never seen it done before (I usually see -l<lib>).

Since the running time seems to grow with the size of the input, my only guess is that threading is being (ab)used in a way that pthreads handle more gracefully than Windows threading (assuming pthreads-win32 is a wrapper for Windows threads). I would attempt to run to core calculations of the algorithm without any threading involved and compare the numbers. I'm not sure what you're using to do your timing, but there is a time program standard on Linux that you can use.

time ./a.out



I see you edited your post. Anyway, I am using time.h to do timing. I reran my program using Linux's time program and here is the output:

richard@richard-desktop:~$ time ./a.out 0 2281
M2 is prime
M3 is prime
M5 is prime
M7 is prime
M13 is prime
M17 is prime
M19 is prime
M31 is prime
M61 is prime
M89 is prime
M107 is prime
M127 is prime
M521 is prime
M607 is prime
M1279 is prime
M2203 is prime
M2281 is prime

17 prime numbers were found. It took 1.00 seconds

real    0m1.676s
user    0m1.652s
sys     0m0.008s
richard@richard-desktop:~$ time ./a.out 0 3217
M2 is prime
M3 is prime
M5 is prime
M7 is prime
M13 is prime
M17 is prime
M19 is prime
M31 is prime
M61 is prime
M89 is prime
M107 is prime
M127 is prime
M521 is prime
M607 is prime
M1279 is prime
M2203 is prime
M2281 is prime
M3217 is prime

18 prime numbers were found. It took 5.00 seconds

real    0m5.284s
user    0m5.228s
sys     0m0.008s
richard@richard-desktop:~$ time ./a.out 2281 3217
M2281 is prime
M3217 is prime

2 prime numbers were found. It took 4.00 seconds

real    0m3.684s
user    0m3.620s
sys     0m0.016s
richard@richard-desktop:~$ time ./a.out 21701
M21701 is prime

1 prime numbers were found. It took 6.00 seconds

real    0m6.612s
user    0m6.204s
sys     0m0.020s