December 23, 2014 Re: math.log() benchmark of first 1 billion int using std.parallelism | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iov Gherman | On Tuesday, 23 December 2014 at 12:31:47 UTC, Iov Gherman wrote:
>
>> Btw. I just noticed small issue with D vs. java, you start messure in D before allocation, but in case of Java after allocation
>
> Here is the java result for parallel processing after moving the start time as the first line in main. Still best result:
>
> 4 secs, 50 ms average
Java:
Exec time: 6 secs, 421 ms
LDC (-O3 -release -mcpu=native -singleobj -inline -boundscheck=off)
time: 5 secs, 321 ms, 877 μs, and 2 hnsecs
GDC(-O3 -frelease -march=native -finline -fno-bounds-check)
time: 5 secs, 237 ms, 453 μs, and 7 hnsecs
DMD(-O -release -inline -noboundscheck)
time: 5 secs, 107 ms, 931 μs, and 3 hnsecs
So all d compilers beat Java in my case:
but I have made some change in D version:
import std.parallelism, std.math, std.stdio, std.datetime;
import core.memory;
enum XMS = 3*1024*1024*1024; //3GB
version(GNU)
{
real mylog(double x) pure nothrow
{
double result;
double y = LN2;
asm
{
"fldl %2\n"
"fldl %1\n"
"fyl2x\n"
: "=t" (result) : "m" (x), "m" (y);
}
return result;
}
}
else
{
real mylog(double x) pure nothrow
{
return yl2x(x, LN2);
}
}
void main() {
GC.reserve(XMS);
auto t1 = Clock.currTime();
auto logs = new double[1_000_000_000];
foreach(i, ref elem; taskPool.parallel(logs, 200)) {
elem = mylog(i + 1.0);
}
auto t2 = Clock.currTime();
writeln("time: ", (t2 - t1));
}
|
December 23, 2014 Re: math.log() benchmark of first 1 billion int using std.parallelism | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Kozak | I'm getting faster execution on java thank dmd, gdc beats it though. ...although, what this topic really provides is a reason for me to get more RAM for my next laptop. How much do you people run with? I had to scale the java down to 300 million to avoid dying with 4G memory. |
Copyright © 1999-2021 by the D Language Foundation