[Lemon-commits] [lemon_svn] alpar: r2994 - hugo/trunk/benchmark
Lemon SVN
svn at lemon.cs.elte.hu
Mon Nov 6 21:51:43 CET 2006
Author: alpar
Date: Tue Oct 17 12:32:12 2006
New Revision: 2994
Added:
hugo/trunk/benchmark/random_bench.cc
Modified:
hugo/trunk/benchmark/Makefile.am
Log:
Benchmark the running time of lemon::Random
Modified: hugo/trunk/benchmark/Makefile.am
==============================================================================
--- hugo/trunk/benchmark/Makefile.am (original)
+++ hugo/trunk/benchmark/Makefile.am Tue Oct 17 12:32:12 2006
@@ -13,6 +13,7 @@
benchmark/bfs-bench \
benchmark/radix_sort-bench \
benchmark/swap_bipartite_bench \
+ benchmark/random_bench \
benchmark/edge_lookup
endif WANT_BENCHMARK
@@ -27,4 +28,6 @@
benchmark_swap_bipartite_bench_SOURCES = benchmark/swap_bipartite_bench.cc
+benchmark_random_bench_SOURCES = benchmark/random_bench.cc
+
benchmark_edge_lookup_SOURCES = benchmark/edge_lookup.cc
Added: hugo/trunk/benchmark/random_bench.cc
==============================================================================
--- (empty file)
+++ hugo/trunk/benchmark/random_bench.cc Tue Oct 17 12:32:12 2006
@@ -0,0 +1,133 @@
+#include<stdlib.h>
+#include<lemon/random.h>
+#include<lemon/time_measure.h>
+
+using namespace lemon;
+
+void f_no()
+{
+}
+
+inline void f_noi()
+{
+}
+
+inline void f_i()
+{
+ static int r;
+ r=5;
+}
+
+inline void f_l()
+{
+ static long int r;
+ r=5;
+}
+
+inline void f_d()
+{
+ static double r;
+ r=5;
+}
+
+inline void f_rand()
+{
+ static int r;
+ r=rand();
+}
+
+inline void f_random()
+{
+ static long int r;
+ r=random();
+}
+
+inline void f_drand48()
+{
+ static double r;
+ r=drand48();
+}
+
+inline void f_rnd_d()
+{
+ static double r;
+ r=rnd();
+}
+inline void f_rnd_int1000()
+{
+ static int r;
+ r=rnd[1000];
+}
+inline void f_rnd_bool()
+{
+ static bool r;
+ r=rnd.boolean();
+}
+
+// inline void f_()
+// {
+// static double r;
+// r=;
+// }
+
+int main()
+{
+ TimeStamp full;
+ TimeStamp t;
+ unsigned int n;
+
+ const double TEST_DURATION=10;
+
+ t=runningTimeTest(f_no,2,&n,&full);
+
+ t=runningTimeTest(f_no,TEST_DURATION,&n,&full);
+ std::cout << "EMPTY: ";
+ std::cout << t.userTime() << " (" << n << " tests)\n";
+
+ t=runningTimeTest(f_noi,TEST_DURATION,&n,&full);
+ std::cout << "INLINED EMPTY: ";
+ std::cout << t.userTime() << " (" << n << " tests)\n";
+
+ TimeStamp ti=t=runningTimeTest(f_i,TEST_DURATION,&n,&full);
+ std::cout << "INT COPY: ";
+ std::cout << t.userTime() << " (" << n << " tests)\n";
+
+ TimeStamp tl=t=runningTimeTest(f_l,TEST_DURATION,&n,&full);
+ std::cout << "LONG COPY: ";
+ std::cout << t.userTime() << " (" << n << " tests)\n";
+
+ TimeStamp td=t=runningTimeTest(f_d,TEST_DURATION,&n,&full);
+ std::cout << "DOUBLE COPY: ";
+ std::cout << t.userTime() << " (" << n << " tests)\n";
+
+ t=runningTimeTest(f_rand,TEST_DURATION,&n,&full);
+ std::cout << "rand(): ";
+ std::cout << (t-ti).userTime() << " (" << n << " tests)\n";
+
+ t=runningTimeTest(f_random,TEST_DURATION,&n,&full);
+ std::cout << "random(): ";
+ std::cout << (t-tl).userTime() << " (" << n << " tests)\n";
+
+ t=runningTimeTest(f_drand48,TEST_DURATION,&n,&full);
+ std::cout << "drand48(): ";
+ std::cout << (t-td).userTime() << " (" << n << " tests)\n";
+
+ t=runningTimeTest(f_rnd_d,TEST_DURATION,&n,&full);
+ std::cout << "rnd(): ";
+ std::cout << (t-td).userTime() << " (" << n << " tests)\n";
+
+ t=runningTimeTest(f_rnd_int1000,TEST_DURATION,&n,&full);
+ std::cout << "rnd[1000]: ";
+ std::cout << (t-ti).userTime() << " (" << n << " tests)\n";
+
+ t=runningTimeTest(f_rnd_bool,TEST_DURATION,&n,&full);
+ std::cout << "rnd.boolean(): ";
+ std::cout << (t-ti).userTime() << " (" << n << " tests)\n";
+
+// t=runningTimeTest(f_,TEST_DURATION,&n,&full);
+// std::cout << "\n";
+// std::cout << t << " (" << n << " tests)\n";
+// std::cout << "Total: " << full << "\n\n";
+
+ return 0;
+}
More information about the Lemon-commits
mailing list