Download Reference Manual
The Developer's Library for D
About Wiki Forums Source Search Contact

Ticket #793 (closed wishlist: fixed)

Opened 9 months ago

Last modified 5 months ago

GC Benchmark Phobos vs Tango

Reported by: KeYeR Assigned to: kris
Priority: trivial Milestone: Documentation
Component: Documentation Version: 0.99.3 Triller
Keywords: gc, pwns phobos Cc:

Description

************ GC Benchmark Phobos vs Tango ********************************* ***************** Tango version ******************************************* module bench;

import tango.io.Stdout;

class TreeNode? {

int item; TreeNode? left, right;

this(int item, TreeNode? left=null, TreeNode? right=null) {

this.item = item; this.left = left; this.right = right;

}

int check() {

return left is null ? item : item + left.check - right.check;

}

}

TreeNode? makeTree(int item, int depth) {

if (depth > 0)

return new TreeNode?(item, makeTree(2*item-1, depth-1), makeTree(2*item, depth-1));

else

return new TreeNode?(item);

}

void main(char[][] args) {

const minDepth = 4; int n = 16; int maxDepth = (minDepth + 2) > n ? minDepth + 2 : n;

int check = makeTree(0, maxDepth + 1).check;

auto longLivedTree = makeTree(0, maxDepth);

for (int depth = minDepth; depth <= maxDepth; depth += 2) {

int iterations = 1 << (maxDepth - depth + minDepth); check = 0;

for (int i = 1; i <= iterations; i++)

check += (makeTree(i, depth)).check + (makeTree(-i, depth)).check;

}

} ************************** TEST ********************************************* C:\coding\tangbench>rebuild -O -release -inline -full -cleanup bench.d C:\coding\tangbench>sh sh-2.04$ time bench.exe

real 0m14.000s user 0m0.010s sys 0m0.010s

********************** PHOBOS VERSION ************************************** module benchphobos;

import std.stdio, std.conv;

class TreeNode? {

int item; TreeNode? left, right;

this(int item, TreeNode? left=null, TreeNode? right=null) {

this.item = item; this.left = left; this.right = right;

}

int check() {

return left is null ? item : item + left.check - right.check;

}

}

TreeNode? makeTree(int item, int depth) {

if (depth > 0)

return new TreeNode?(item, makeTree(2*item-1, depth-1), makeTree(2*item, depth-1));

else

return new TreeNode?(item);

}

void main(char[][] args) {

const minDepth = 4; int n = 16; int maxDepth = (minDepth + 2) > n ? minDepth + 2 : n;

int check = makeTree(0, maxDepth + 1).check;

auto longLivedTree = makeTree(0, maxDepth);

for (int depth = minDepth; depth <= maxDepth; depth += 2) {

int iterations = 1 << (maxDepth - depth + minDepth); check = 0;

for (int i = 1; i <= iterations; i++)

check += (makeTree(i, depth)).check + (makeTree(-i, depth)).check;

}

}

******************************* TEST ************************************** C:\coding\tangbench>build -release -inline -O -full -cleanup benchphobos.d C:\coding\tangbench>sh sh-2.04$ time ./benchphobos.exe

real 0m17.575s user 0m0.010s sys 0m0.010s

Change History

04/01/08 11:29:53 changed by KeYeR

OK, updated with dmd 1.028 , and tango trunk (3410). Code compiles well, results:

Tango:

C:\coding\Personal\tangbench>build -release -inline -cleanup -O bench

C:\coding\Personal\tangbench>sh sh-2.04$ time bench.exe

real 0m13.410s user 0m0.020s sys 0m0.030s

Phobos C:\coding\Personal\tangbench>build -release -inline -cleanup -O benchphobos

C:\coding\Personal\tangbench>sh sh-2.04$ time benchphobos.exe

real 0m19.058s user 0m0.010s sys 0m0.010s

04/02/08 17:25:17 changed by larsivi

  • status changed from new to closed.
  • resolution set to fixed.

Put GCBenchmark. Thanks! :)