Thread: [Compbench-devel] CompBenchmarks++/Benchmark Benchmark-BENCHPPLINUX.cpp, 1.1, 1.2 Benchmark-BENCHPP
Brought to you by:
xfred
From: Frederic T. <xf...@us...> - 2006-12-11 20:12:36
|
Update of /cvsroot/compbench/CompBenchmarks++/Benchmark In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv31815 Modified Files: Benchmark-BENCHPPLINUX.cpp Benchmark-BENCHPPLINUX.h benchmarks.list Log Message: New supported benchmarks in benchpplinux. Index: benchmarks.list =================================================================== RCS file: /cvsroot/compbench/CompBenchmarks++/Benchmark/benchmarks.list,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** benchmarks.list 4 Dec 2006 19:17:13 -0000 1.2 --- benchmarks.list 11 Dec 2006 20:12:28 -0000 1.3 *************** *** 26,31 **** benchpplinux-dhrystone:BENCHPPLINUX:BENCHPPLINUX_DHRYSTONE benchpplinux-whetstone:BENCHPPLINUX:BENCHPPLINUX_WHETSTONE linpackc-sp-unroll:LINPACKC:LINPACKC_SP_UNROLL linpackc-sp-roll:LINPACKC:LINPACKC_SP_ROLL linpackc-dp-unroll:LINPACKC:LINPACKC_DP_UNROLL ! linpackc-dp-roll:LINPACKC:LINPACKC_DP_ROLL --- 26,39 ---- benchpplinux-dhrystone:BENCHPPLINUX:BENCHPPLINUX_DHRYSTONE benchpplinux-whetstone:BENCHPPLINUX:BENCHPPLINUX_WHETSTONE + benchpplinux-bool-assign:BENCHPPLINUX:BENCHPPLINUX_BOOL_ASSIGN + benchpplinux-bool-if:BENCHPPLINUX:BENCHPPLINUX_BOOL_IF + benchpplinux-2wifelse:BENCHPPLINUX:BENCHPPLINUX_2WAY_IFELSE + benchpplinux-2wswitch:BENCHPPLINUX:BENCHPPLINUX_2WAY_SWITCH + benchpplinux-10wifelse:BENCHPPLINUX:BENCHPPLINUX_10WAY_IFELSE + benchpplinux-10wswitch:BENCHPPLINUX:BENCHPPLINUX_10WAY_SWITCH + benchpplinux-10wsparseswitch:BENCHPPLINUX:BENCHPPLINUX_10WAY_SPARSE_SWITCH + benchpplinux-10wvfc:BENCHPPLINUX:BENCHPPLINUX_10WAY_VFC linpackc-sp-unroll:LINPACKC:LINPACKC_SP_UNROLL linpackc-sp-roll:LINPACKC:LINPACKC_SP_ROLL linpackc-dp-unroll:LINPACKC:LINPACKC_DP_UNROLL ! linpackc-dp-roll:LINPACKC:LINPACKC_DP_ROLL \ No newline at end of file Index: Benchmark-BENCHPPLINUX.h =================================================================== RCS file: /cvsroot/compbench/CompBenchmarks++/Benchmark/Benchmark-BENCHPPLINUX.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Benchmark-BENCHPPLINUX.h 4 Dec 2006 19:17:13 -0000 1.1 --- Benchmark-BENCHPPLINUX.h 11 Dec 2006 20:12:28 -0000 1.2 *************** *** 54,58 **** }; ! /** \brief Defines the dhrystone benchmark within benchpp package. */ class CBMBenchmarkBENCHPPLINUX_DHRYSTONE : public CBMBenchmarkBENCHPPLINUX --- 54,58 ---- }; ! /** \brief Defines the dhrystone benchmark within benchpp-linux package. */ class CBMBenchmarkBENCHPPLINUX_DHRYSTONE : public CBMBenchmarkBENCHPPLINUX *************** *** 70,74 **** }; ! /** \brief Defines the whetstone benchmark within benchpp package. */ class CBMBenchmarkBENCHPPLINUX_WHETSTONE : public CBMBenchmarkBENCHPPLINUX --- 70,74 ---- }; ! /** \brief Defines the whetstone benchmark within benchpp-linux package. */ class CBMBenchmarkBENCHPPLINUX_WHETSTONE : public CBMBenchmarkBENCHPPLINUX *************** *** 86,89 **** --- 86,239 ---- }; + /** \brief Defines a generic class to get benchmark in benchpp-linux according + * to an iteration number and the internal compbenchmarks' timer. */ + class CBMBenchmarkBENCHPPLINUX_IterationsPerSec : public CBMBenchmarkBENCHPPLINUX + { + protected: + CBMBenchmarkBENCHPPLINUX_IterationsPerSec(class CBMSystem *_system); + + virtual std::string bench(void); + virtual ~CBMBenchmarkBENCHPPLINUX_IterationsPerSec(); + }; + + + /** \brief Defines the boolean assignment benchmark within benchpp-linux package. + */ + class CBMBenchmarkBENCHPPLINUX_BOOL_ASSIGN : public CBMBenchmarkBENCHPPLINUX_IterationsPerSec + { + protected: + virtual std::string benchmarkName(void); + virtual std::string benchmarkBENCHPPLINUXComments(void); + + + virtual std::string benchppBenchmark(void); + + public: + CBMBenchmarkBENCHPPLINUX_BOOL_ASSIGN(class CBMSystem *_system); + virtual ~CBMBenchmarkBENCHPPLINUX_BOOL_ASSIGN(); + }; + + + /** \brief Defines the 'boolean if' benchmark within benchpp-linux package. + */ + class CBMBenchmarkBENCHPPLINUX_BOOL_IF : public CBMBenchmarkBENCHPPLINUX_IterationsPerSec + { + protected: + virtual std::string benchmarkName(void); + virtual std::string benchmarkBENCHPPLINUXComments(void); + + + virtual std::string benchppBenchmark(void); + + public: + CBMBenchmarkBENCHPPLINUX_BOOL_IF(class CBMSystem *_system); + virtual ~CBMBenchmarkBENCHPPLINUX_BOOL_IF(); + }; + + /** \brief Defines the 'two-way if/else' benchmark within benchpp-linux + * package. + */ + class CBMBenchmarkBENCHPPLINUX_2WAY_IFELSE : public CBMBenchmarkBENCHPPLINUX_IterationsPerSec + { + protected: + virtual std::string benchmarkName(void); + virtual std::string benchmarkBENCHPPLINUXComments(void); + + + virtual std::string benchppBenchmark(void); + + public: + CBMBenchmarkBENCHPPLINUX_2WAY_IFELSE(class CBMSystem *_system); + virtual ~CBMBenchmarkBENCHPPLINUX_2WAY_IFELSE(); + }; + + + /** \brief Defines the 'two-way switch' benchmark within benchpp-linux + * package. + */ + class CBMBenchmarkBENCHPPLINUX_2WAY_SWITCH : public CBMBenchmarkBENCHPPLINUX_IterationsPerSec + { + protected: + virtual std::string benchmarkName(void); + virtual std::string benchmarkBENCHPPLINUXComments(void); + + + virtual std::string benchppBenchmark(void); + + public: + CBMBenchmarkBENCHPPLINUX_2WAY_SWITCH(class CBMSystem *_system); + virtual ~CBMBenchmarkBENCHPPLINUX_2WAY_SWITCH(); + }; + + + /** \brief Defines the '10-way if/else' benchmark within benchpp-linux + * package. + */ + class CBMBenchmarkBENCHPPLINUX_10WAY_IFELSE : public CBMBenchmarkBENCHPPLINUX_IterationsPerSec + { + protected: + virtual std::string benchmarkName(void); + virtual std::string benchmarkBENCHPPLINUXComments(void); + + + virtual std::string benchppBenchmark(void); + + public: + CBMBenchmarkBENCHPPLINUX_10WAY_IFELSE(class CBMSystem *_system); + virtual ~CBMBenchmarkBENCHPPLINUX_10WAY_IFELSE(); + }; + + + /** \brief Defines the '10-way switch' benchmark within benchpp-linux + * package. + */ + class CBMBenchmarkBENCHPPLINUX_10WAY_SWITCH : public CBMBenchmarkBENCHPPLINUX_IterationsPerSec + { + protected: + virtual std::string benchmarkName(void); + virtual std::string benchmarkBENCHPPLINUXComments(void); + + + virtual std::string benchppBenchmark(void); + + public: + CBMBenchmarkBENCHPPLINUX_10WAY_SWITCH(class CBMSystem *_system); + virtual ~CBMBenchmarkBENCHPPLINUX_10WAY_SWITCH(); + }; + + /** \brief Defines the '10-way sparse switch' benchmark within benchpp-linux + * package. + */ + class CBMBenchmarkBENCHPPLINUX_10WAY_SPARSE_SWITCH : public CBMBenchmarkBENCHPPLINUX_IterationsPerSec + { + protected: + virtual std::string benchmarkName(void); + virtual std::string benchmarkBENCHPPLINUXComments(void); + + + virtual std::string benchppBenchmark(void); + + public: + CBMBenchmarkBENCHPPLINUX_10WAY_SPARSE_SWITCH(class CBMSystem *_system); + virtual ~CBMBenchmarkBENCHPPLINUX_10WAY_SPARSE_SWITCH(); + }; + + /** \brief Defines the '10-way virtual function call' benchmark within + * benchpp-linux package. + */ + class CBMBenchmarkBENCHPPLINUX_10WAY_VFC : public CBMBenchmarkBENCHPPLINUX_IterationsPerSec + { + protected: + virtual std::string benchmarkName(void); + virtual std::string benchmarkBENCHPPLINUXComments(void); + + + virtual std::string benchppBenchmark(void); + + public: + CBMBenchmarkBENCHPPLINUX_10WAY_VFC(class CBMSystem *_system); + virtual ~CBMBenchmarkBENCHPPLINUX_10WAY_VFC(); + }; + lib_declare(); Index: Benchmark-BENCHPPLINUX.cpp =================================================================== RCS file: /cvsroot/compbench/CompBenchmarks++/Benchmark/Benchmark-BENCHPPLINUX.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Benchmark-BENCHPPLINUX.cpp 4 Dec 2006 19:17:13 -0000 1.1 --- Benchmark-BENCHPPLINUX.cpp 11 Dec 2006 20:12:28 -0000 1.2 *************** *** 6,9 **** --- 6,11 ---- #include <fstream> + #include <stdlib.h> + #include "Benchmark/Benchmark-BENCHPPLINUX.libwrapper.h" *************** *** 126,130 **** cmd+=" && "; cmd+=CBM_PROG_MAKE; ! cmd+=" a000091 a000092"; // !!! #5a; cmd+=" CC=\""; --- 128,132 ---- cmd+=" && "; cmd+=CBM_PROG_MAKE; ! cmd+=" a000091 a000092 f000001 f000002 f000003 f000004 f000005 f000006 f000007 f000008 l000001 l000002"; // !!! #5a; cmd+=" CC=\""; *************** *** 183,187 **** std::string CBMBenchmarkBENCHPPLINUX::homePage(void) { ! return("http://web.archive.org/web/20050307095704/www.research.att.com/~orost/bench_plus_plus.html"); } --- 185,189 ---- std::string CBMBenchmarkBENCHPPLINUX::homePage(void) { ! return("http://benchpplinux.sf.net"); } *************** *** 207,211 **** std::string CBMBenchmarkBENCHPPLINUX_DHRYSTONE::benchmarkName(void) { ! return("benchpp-dhrystone"); } --- 209,213 ---- std::string CBMBenchmarkBENCHPPLINUX_DHRYSTONE::benchmarkName(void) { ! return("benchpplinux-dhrystone"); } *************** *** 231,235 **** std::string CBMBenchmarkBENCHPPLINUX_WHETSTONE::benchmarkName(void) { ! return("benchpp-whetstone"); } --- 233,237 ---- std::string CBMBenchmarkBENCHPPLINUX_WHETSTONE::benchmarkName(void) { ! return("benchpplinux-whetstone"); } *************** *** 247,248 **** --- 249,492 ---- { } + + + + CBMBenchmarkBENCHPPLINUX_IterationsPerSec::CBMBenchmarkBENCHPPLINUX_IterationsPerSec(CBMSystem *_system) + : CBMBenchmarkBENCHPPLINUX(_system) + { + } + + std::string CBMBenchmarkBENCHPPLINUX_IterationsPerSec::bench(void) + { + std::string cmd; + std::string result; + time_t begint; + time_t endt; + double it; + char dum[16] = { 0 }; + + cmd="cd "; + cmd+=localPackageAbsoluteDirectory(); + cmd+=" && echo $(./"; + cmd+=benchppBenchmark(); + cmd+=" | "; + cmd+=CBM_PROG_GREP; + cmd+=" 'Iteration Count' "; + cmd+=" | "; + cmd+=CBM_PROG_CUT; + cmd+=" -f3 -d':')"; + + begint=system->Time(); + if (system->exec(cmd, result)==0) { + system->Chomp(result); + it=atof(result.c_str()); + endt=system->Time(); + if (endt>begint) { + sprintf(dum, "%0.0f", it/(endt-begint)); + result=dum; + return(result); + } else { + return("0"); + } + } + return("0"); + } + + CBMBenchmarkBENCHPPLINUX_IterationsPerSec::~CBMBenchmarkBENCHPPLINUX_IterationsPerSec() + { + } + + CBMBenchmarkBENCHPPLINUX_BOOL_ASSIGN::CBMBenchmarkBENCHPPLINUX_BOOL_ASSIGN(CBMSystem *_system) + : CBMBenchmarkBENCHPPLINUX_IterationsPerSec(_system) + { + } + + std::string CBMBenchmarkBENCHPPLINUX_BOOL_ASSIGN::benchmarkName(void) + { + return("benchpplinux-bool-assign"); + } + + std::string CBMBenchmarkBENCHPPLINUX_BOOL_ASSIGN::benchppBenchmark(void) + { + return("f000001"); + } + + std::string CBMBenchmarkBENCHPPLINUX_BOOL_ASSIGN::benchmarkBENCHPPLINUXComments(void) + { + return("C++ implementation a boolean assignment (time to set a boolean flag" \ + "using a logical equation)"); + } + + CBMBenchmarkBENCHPPLINUX_BOOL_ASSIGN::~CBMBenchmarkBENCHPPLINUX_BOOL_ASSIGN() + { + } + + CBMBenchmarkBENCHPPLINUX_BOOL_IF::CBMBenchmarkBENCHPPLINUX_BOOL_IF(CBMSystem *_system) + : CBMBenchmarkBENCHPPLINUX_IterationsPerSec(_system) + { + } + + std::string CBMBenchmarkBENCHPPLINUX_BOOL_IF::benchmarkName(void) + { + return("benchpplinux-bool-if"); + } + + std::string CBMBenchmarkBENCHPPLINUX_BOOL_IF::benchppBenchmark(void) + { + return("f000002"); + } + + std::string CBMBenchmarkBENCHPPLINUX_BOOL_IF::benchmarkBENCHPPLINUXComments(void) + { + return("C++ implementation a boolean if block (time to set a boolean flag" \ + "using a comparaison bettween a global and a local integer)"); + } + + CBMBenchmarkBENCHPPLINUX_BOOL_IF::~CBMBenchmarkBENCHPPLINUX_BOOL_IF() + { + } + + CBMBenchmarkBENCHPPLINUX_2WAY_IFELSE::CBMBenchmarkBENCHPPLINUX_2WAY_IFELSE(CBMSystem *_system) + : CBMBenchmarkBENCHPPLINUX_IterationsPerSec(_system) + { + } + + std::string CBMBenchmarkBENCHPPLINUX_2WAY_IFELSE::benchmarkName(void) + { + return("benchpplinux-2wifelse"); + } + + std::string CBMBenchmarkBENCHPPLINUX_2WAY_IFELSE::benchppBenchmark(void) + { + return("f000003"); + } + + std::string CBMBenchmarkBENCHPPLINUX_2WAY_IFELSE::benchmarkBENCHPPLINUXComments(void) + { + return("C++ implementation of a 2-way if/else if statement"); + } + + CBMBenchmarkBENCHPPLINUX_2WAY_IFELSE::~CBMBenchmarkBENCHPPLINUX_2WAY_IFELSE() + { + } + + CBMBenchmarkBENCHPPLINUX_2WAY_SWITCH::CBMBenchmarkBENCHPPLINUX_2WAY_SWITCH(CBMSystem *_system) + : CBMBenchmarkBENCHPPLINUX_IterationsPerSec(_system) + { + } + + std::string CBMBenchmarkBENCHPPLINUX_2WAY_SWITCH::benchmarkName(void) + { + return("benchpplinux-2wswitch"); + } + + std::string CBMBenchmarkBENCHPPLINUX_2WAY_SWITCH::benchppBenchmark(void) + { + return("f000004"); + } + + std::string CBMBenchmarkBENCHPPLINUX_2WAY_SWITCH::benchmarkBENCHPPLINUXComments(void) + { + return("C++ implementation of a 2-way if/else if statement"); + } + + CBMBenchmarkBENCHPPLINUX_2WAY_SWITCH::~CBMBenchmarkBENCHPPLINUX_2WAY_SWITCH() + { + } + + CBMBenchmarkBENCHPPLINUX_10WAY_IFELSE::CBMBenchmarkBENCHPPLINUX_10WAY_IFELSE(CBMSystem *_system) + : CBMBenchmarkBENCHPPLINUX_IterationsPerSec(_system) + { + } + + std::string CBMBenchmarkBENCHPPLINUX_10WAY_IFELSE::benchmarkName(void) + { + return("benchpplinux-10wifelse"); + } + + std::string CBMBenchmarkBENCHPPLINUX_10WAY_IFELSE::benchppBenchmark(void) + { + return("f000005"); + } + + std::string CBMBenchmarkBENCHPPLINUX_10WAY_IFELSE::benchmarkBENCHPPLINUXComments(void) + { + return("C++ implementation of a 10-way if/else if statement"); + } + + CBMBenchmarkBENCHPPLINUX_10WAY_IFELSE::~CBMBenchmarkBENCHPPLINUX_10WAY_IFELSE() + { + } + + CBMBenchmarkBENCHPPLINUX_10WAY_SWITCH::CBMBenchmarkBENCHPPLINUX_10WAY_SWITCH(CBMSystem *_system) + : CBMBenchmarkBENCHPPLINUX_IterationsPerSec(_system) + { + } + + std::string CBMBenchmarkBENCHPPLINUX_10WAY_SWITCH::benchmarkName(void) + { + return("benchpplinux-10wswitch"); + } + + std::string CBMBenchmarkBENCHPPLINUX_10WAY_SWITCH::benchppBenchmark(void) + { + return("f000006"); + } + + std::string CBMBenchmarkBENCHPPLINUX_10WAY_SWITCH::benchmarkBENCHPPLINUXComments(void) + { + return("C++ implementation of a 10-way if/else if statement"); + } + + CBMBenchmarkBENCHPPLINUX_10WAY_SWITCH::~CBMBenchmarkBENCHPPLINUX_10WAY_SWITCH() + { + } + + + CBMBenchmarkBENCHPPLINUX_10WAY_SPARSE_SWITCH::CBMBenchmarkBENCHPPLINUX_10WAY_SPARSE_SWITCH(CBMSystem *_system) + : CBMBenchmarkBENCHPPLINUX_IterationsPerSec(_system) + { + } + + std::string CBMBenchmarkBENCHPPLINUX_10WAY_SPARSE_SWITCH::benchmarkName(void) + { + return("benchpplinux-10wspareswitch"); + } + + std::string CBMBenchmarkBENCHPPLINUX_10WAY_SPARSE_SWITCH::benchppBenchmark(void) + { + return("f000007"); + } + + std::string CBMBenchmarkBENCHPPLINUX_10WAY_SPARSE_SWITCH::benchmarkBENCHPPLINUXComments(void) + { + return("C++ implementation of a 10-way sparse switch statement"); + } + + CBMBenchmarkBENCHPPLINUX_10WAY_SPARSE_SWITCH::~CBMBenchmarkBENCHPPLINUX_10WAY_SPARSE_SWITCH() + { + } + + CBMBenchmarkBENCHPPLINUX_10WAY_VFC::CBMBenchmarkBENCHPPLINUX_10WAY_VFC(CBMSystem *_system) + : CBMBenchmarkBENCHPPLINUX_IterationsPerSec(_system) + { + } + + std::string CBMBenchmarkBENCHPPLINUX_10WAY_VFC::benchmarkName(void) + { + return("benchpplinux-10wvfc"); + } + + std::string CBMBenchmarkBENCHPPLINUX_10WAY_VFC::benchppBenchmark(void) + { + return("f000008"); + } + + std::string CBMBenchmarkBENCHPPLINUX_10WAY_VFC::benchmarkBENCHPPLINUXComments(void) + { + return("C++ implementation of a 10-way virtual function class"); + } + + CBMBenchmarkBENCHPPLINUX_10WAY_VFC::~CBMBenchmarkBENCHPPLINUX_10WAY_VFC() + { + } |