Tech Off Post
Single Post Permalink

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 pthreadswin32 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@richarddesktop:~$ 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@richarddesktop:~$ 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@richarddesktop:~$ 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@richarddesktop:~$ 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