AMD R5 5500U 2.1GHz 12线程
n | 单线程筛法( c language) | kavehmz / prime( golang ) | kimwalisch/primesieve( c++ ) | CUDA |
---|---|---|---|---|
1e8 | 1.08s | 0.274s | 0.004s | |
1e9 | 14.8s | 2.3s | 0.03s | |
1e10 | memory can’t | 28.5s | 0.3s | |
1e11 | memory can’t | 183.3s | 3s | |
1e12 | memory can’t | 34s | ||
1e13 | memory can’t | 473.658s |
AMD EPYC 7K62 x2 2.6GHz192线程
n | 单线程筛法( c language) | kavehmz / prime( golang ) | kimwalisch/primesieve( c++ ) | CUDA |
---|---|---|---|---|
1e8 | 0.99s | 0.005s | ||
1e9 | 12s | 0.018s | ||
1e10 | 179.802s | 0.052s | ||
1e11 | 4468.11s | 0.265s | ||
1e12 | memory can’t | 2.501s | ||
1e13 | memory can’t | 37s |
c language:
void doprime(bool* prime)
{
long long int n;
bool t=true;
setprime(2,prime);
setprime(3,prime);
n=1;
while(n*n<max)
{
n=(t)?n+4:n+2;
t=!t;
if(!prime[n])
continue;
setprime(n,prime);
}
}
gcc prime.c -O3 -o prime