Port of the Python version to D
parent
612a67527b
commit
282c95ebb3
|
@ -1,5 +1,5 @@
|
||||||
# langs-performance
|
# langs-performance
|
||||||
C++ vs. Python vs. Perl vs. PHP vs. Java vs. NodeJS vs. Go vs. Ruby vs. Rust vs. Swift performance benchmark
|
C++ vs. Python vs. Perl vs. PHP vs. Java vs. NodeJS vs. Go vs. Ruby vs. Rust vs. Swift vs. D performance benchmark
|
||||||
|
|
||||||
Blog articles:
|
Blog articles:
|
||||||
* 2016: https://blog.famzah.net/2016/09/10/cpp-vs-python-vs-php-vs-java-vs-others-performance-benchmark-2016-q3/
|
* 2016: https://blog.famzah.net/2016/09/10/cpp-vs-python-vs-php-vs-java-vs-others-performance-benchmark-2016-q3/
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
import std.algorithm;
|
||||||
|
import std.array;
|
||||||
|
import std.conv;
|
||||||
|
import std.datetime;
|
||||||
|
import std.math;
|
||||||
|
import std.process;
|
||||||
|
import std.range;
|
||||||
|
import std.stdio;
|
||||||
|
|
||||||
|
int[] get_primes7(int n){
|
||||||
|
if (n<2){
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
if (n==2){
|
||||||
|
return [2];
|
||||||
|
}
|
||||||
|
auto s = array(iota(3,n+1,2));
|
||||||
|
auto mroot = sqrt(cast(float)n);
|
||||||
|
auto half = s.length;
|
||||||
|
auto i = 0;
|
||||||
|
auto m = 3;
|
||||||
|
while (m <= mroot){
|
||||||
|
if (s[i] != 0){
|
||||||
|
int j = (m * m - 3) / 2;
|
||||||
|
s[j] = 0;
|
||||||
|
while (j< half){
|
||||||
|
s[j] = 0;
|
||||||
|
j += m;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
m = 2*i + 3;
|
||||||
|
}
|
||||||
|
return [2]~array(filter!(a => a!=0)(s));
|
||||||
|
}
|
||||||
|
|
||||||
|
void main(){
|
||||||
|
auto start_time = Clock.currTime().toUnixTime();
|
||||||
|
auto period_time = to!int(environment.get("RUN_TIME"));
|
||||||
|
|
||||||
|
while(Clock.currTime().toUnixTime() - start_time < period_time){
|
||||||
|
auto res = get_primes7(10_000_000);
|
||||||
|
writeln("Found ", res.length, " prime numbers.");
|
||||||
|
}
|
||||||
|
}
|
5
run.sh
5
run.sh
|
@ -171,3 +171,8 @@ C='dotnet' ; SRC='primes.dotnet' ; run_benchmark 'C# .NET Core Linux' \
|
||||||
'util/build' 'util/run' "$C --version" 'cat' "$SRC"
|
'util/build' 'util/run' "$C --version" 'cat' "$SRC"
|
||||||
rm -rf bin obj
|
rm -rf bin obj
|
||||||
cd .. || exit 1
|
cd .. || exit 1
|
||||||
|
|
||||||
|
##
|
||||||
|
C='ldc2' ; SRC='primes.d' ; run_benchmark 'D' \
|
||||||
|
"$C -O -of primes.d.out $SRC" './primes.d.out' "$C -version" 'head -n1' "$SRC"
|
||||||
|
rm -f ./primes.d.out
|
Loading…
Reference in New Issue