# HG changeset patch # User alpar # Date 1090944582 0 # Node ID 235fd36336b78e0801821b4a290c73474bf382bb # Parent aa700e5c47b552830b6c0c32470214fb3a6dbdcc - bfs-bench added - hypercube generators moved to bench-tools.h - new benchmark script diff -r aa700e5c47b5 -r 235fd36336b7 src/benchmark/Makefile.am --- a/src/benchmark/Makefile.am Tue Jul 27 16:04:21 2004 +0000 +++ b/src/benchmark/Makefile.am Tue Jul 27 16:09:42 2004 +0000 @@ -1,7 +1,9 @@ AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/work -I$(top_srcdir)/src/work/marci -noinst_PROGRAMS = graph-bench hcube +noinst_PROGRAMS = graph-bench hcube bfs-bench graph_bench_SOURCES = graph-bench.cc bench_tools.h hcube_SOURCES = hcube.cc bench_tools.h + +bfs_bench_SOURCES = bfs-bench.cc bench_tools.h diff -r aa700e5c47b5 -r 235fd36336b7 src/benchmark/bench_tools.h --- a/src/benchmark/bench_tools.h Tue Jul 27 16:04:21 2004 +0000 +++ b/src/benchmark/bench_tools.h Tue Jul 27 16:09:42 2004 +0000 @@ -81,6 +81,42 @@ << S.getSystemTime() << ' ' << S.getRealTime() << std::endl; } + + +/// +template +void addHiperCube(Graph &G,int dim,std::vector &nodes) +{ + GRAPH_TYPEDEF_FACTORY(Graph); + std::vector bits(dim+1); + bits[0]=1; + for(int i=1;i<=dim;i++) bits[i]=2*bits[i-1]; + + for(int i=0;i +void addBiDirHiperCube(Graph &G,int dim,std::vector&nodes) +{ + GRAPH_TYPEDEF_FACTORY(Graph); + + std::vector bits(dim+1); + bits[0]=1; + for(int i=1;i<=dim;i++) bits[i]=2*bits[i-1]; + + for(int i=0;i&2 - for ((i=1;i<5;i++)) + $2 $3 $4 $5 $6 $7 $8 $9; + for ((i=1;i<=5;i++)) do $2 $3 $4 $5 $6 $7 $8 $9; done | diff -r aa700e5c47b5 -r 235fd36336b7 src/benchmark/bfs-bench.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/benchmark/bfs-bench.cc Tue Jul 27 16:09:42 2004 +0000 @@ -0,0 +1,127 @@ +// -*- mode:C++ -*- + +#include +#include +#include +#include +#include + +#include"bench_tools.h" + +using namespace std; +using namespace hugo; + +inline int numOfOnes(int n,int dim) +{ + int s=0; + for(int i=0;i>=1; + } + return s; +} + +inline int numOfZeros(int n,int dim) +{ + int s=dim; + for(int i=0;i>=1; + } + return s; +} + +template +void bfsStlQueue(Graph &G,typename Graph::Node source) +{ + GRAPH_TYPEDEF_FACTORY(Graph); + + using namespace std; + + typename Graph::NodeMap visited(G,false); + + queue Q; + + Q.push(source); + visited[source]=true; + do { + Node n(Q.front()); + Node m; + Q.pop(); + for(OutEdgeIt e(G,n);G.valid(e);G.next(e)) + if(!visited[m=G.head(e)]) { + Q.push(m); + visited.set(m,true); + } + } while(!Q.empty()); +} + +template +void bfsOwnQueue(Graph &G,typename Graph::Node source) +{ + GRAPH_TYPEDEF_FACTORY(Graph); + + using namespace std; + + typename Graph::NodeMap visited(G,false); + + int N=G.nodeNum(); + vector Q(N); + int Qh=0; + int Qt=0; + + + Q[Qh++]=source; + visited.set(source,true); + do { + Node m; + Node n=Q[Qt++]; + for(OutEdgeIt e(G,n);G.valid(e);G.next(e)) + if(!visited[m=G.head(e)]) { + Q[Qh++]=m; + visited.set(m,true); + } + } while(Qt!=Qh); +} + +int main(int argc, char *argv[]) +{ + // typedef ListGraph Graph; + typedef SmartGraph Graph; + + ///\bug GRAPH_TYPEDEF_FACTORY(Graph); + GRAPH_TYPEDEF_FACTORY_NOTYPENAME(Graph); + + Graph G; + + Timer T; + + if(argc!=2) { + cout << "Usage: " << argv[0] << " dim\n"; + return 1; + } + + int dim=atoi(argv[1]); + +// cout << "Creating Hipercube ("<< (1< nodes; + addBiDirHiperCube(G,dim,nodes); + + PrintTime("GENGRAPH",T); + + T.reset(); + { + for(int i=0;i<50000;i++) + bfsStlQueue(G,nodes[0]); + } + PrintTime("BFS-STL",T); + T.reset(); + { + for(int i=0;i<50000;i++) + bfsOwnQueue(G,nodes[0]); + } + PrintTime("BFS-OWN",T); +} diff -r aa700e5c47b5 -r 235fd36336b7 src/benchmark/hcube.cc --- a/src/benchmark/hcube.cc Tue Jul 27 16:04:21 2004 +0000 +++ b/src/benchmark/hcube.cc Tue Jul 27 16:09:42 2004 +0000 @@ -11,40 +11,6 @@ using namespace std; using namespace hugo; -template -void addHiperCube(Graph &G,int dim,vector &nodes) -{ - GRAPH_TYPEDEF_FACTORY(Graph); - - vector bits(dim+1); - bits[0]=1; - for(int i=1;i<=dim;i++) bits[i]=2*bits[i-1]; - - for(int i=0;i -void addBiDirHiperCube(Graph &G,int dim,vector &nodes) -{ - GRAPH_TYPEDEF_FACTORY(Graph); - - vector bits(dim+1); - bits[0]=1; - for(int i=1;i<=dim;i++) bits[i]=2*bits[i-1]; - - for(int i=0;i