[complement-svn] SF.net SVN: complement:[1959] trunk/complement/explore/perf
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2008-08-13 16:27:13
|
Revision: 1959 http://complement.svn.sourceforge.net/complement/?rev=1959&view=rev Author: complement Date: 2008-08-13 16:27:09 +0000 (Wed, 13 Aug 2008) Log Message: ----------- Performance tests for Berkeley DB established Added Paths: ----------- trunk/complement/explore/perf/DB/ trunk/complement/explore/perf/DB/Berkeley/ trunk/complement/explore/perf/DB/Berkeley/Makefile trunk/complement/explore/perf/DB/Berkeley/Makefile.inc trunk/complement/explore/perf/DB/Berkeley/sc_perf_suite.cc trunk/complement/explore/perf/DB/Berkeley/sc_perf_suite.h trunk/complement/explore/perf/DB/Berkeley/suite.cc Property changes on: trunk/complement/explore/perf/DB/Berkeley ___________________________________________________________________ Added: svn:ignore + obj Added: trunk/complement/explore/perf/DB/Berkeley/Makefile =================================================================== --- trunk/complement/explore/perf/DB/Berkeley/Makefile (rev 0) +++ trunk/complement/explore/perf/DB/Berkeley/Makefile 2008-08-13 16:27:09 UTC (rev 1959) @@ -0,0 +1,45 @@ +# -*- Makefile -*- Time-stamp: <08/07/31 15:43:19 yeti> + +SRCROOT := ../../.. + +include Makefile.inc +include ${SRCROOT}/Makefiles/gmake/top.mak + + +INCLUDES += -I$(SRCROOT)/include +INCLUDES += -I.. +ifdef BOOST_DIR +INCLUDES += -I$(BOOST_INCLUDE_DIR) +endif +DEFS += -D__FIT_EXAM + +LIBMT_DIR = ${SRCROOT}/lib/mt +LIBMISC_DIR = ${SRCROOT}/lib/misc +LIBEXAM_DIR = ${SRCROOT}/lib/exam + +ifeq ($(OSNAME),linux) + +release-shared: LDFLAGS += -L${LIBMT_DIR}/${OUTPUT_DIR} \ + -L${LIBEXAM_DIR}/${OUTPUT_DIR} \ + -L${LIBMISC_DIR}/${OUTPUT_DIR} \ + -Wl,--rpath=${LIBMT_DIR}/${OUTPUT_DIR}:${LIBEXAM_DIR}/${OUTPUT_DIR}:${LIBMISC_DIR}/${OUTPUT_DIR}:${STLPORT_LIB_DIR} + +dbg-shared: LDFLAGS += -L${LIBMT_DIR}/${OUTPUT_DIR_DBG} \ + -L${LIBEXAM_DIR}/${OUTPUT_DIR_DBG} \ + -L${LIBMISC_DIR}/${OUTPUT_DIR_DBG} \ + -Wl,--rpath=${LIBMT_DIR}/${OUTPUT_DIR_DBG}:${LIBEXAM_DIR}/${OUTPUT_DIR_DBG}:${LIBMISC_DIR}/${OUTPUT_DIR_DBG}:${STLPORT_LIB_DIR} + +ifndef WITHOUT_STLPORT +stldbg-shared: LDFLAGS += -L${LIBMT_DIR}/${OUTPUT_DIR_STLDBG} \ + -L${LIBEXAM_DIR}/${OUTPUT_DIR_STLDBG} \ + -L${LIBMISC_DIR}/${OUTPUT_DIR_STLDBG} \ + -Wl,--rpath=${LIBMT_DIR}/${OUTPUT_DIR_STLDBG}:${LIBEXAM_DIR}/${OUTPUT_DIR_STLDBG}:${LIBMISC_DIR}/${OUTPUT_DIR_STLDBG}:${STLPORT_LIB_DIR} +endif + +endif + +release-shared : LDLIBS = -lxmt -lexam -lmisc -ldb_cxx -ldb +dbg-shared : LDLIBS = -lxmtg -lexamg -lmiscg -ldb_cxx -ldb +ifndef WITHOUT_STLPORT +stldbg-shared : LDLIBS = -lxmtstlg -lexamstlg -lmiscstlg -ldb_cxx -ldb +endif Added: trunk/complement/explore/perf/DB/Berkeley/Makefile.inc =================================================================== --- trunk/complement/explore/perf/DB/Berkeley/Makefile.inc (rev 0) +++ trunk/complement/explore/perf/DB/Berkeley/Makefile.inc 2008-08-13 16:27:09 UTC (rev 1959) @@ -0,0 +1,4 @@ +# -*- makefile -*- Time-stamp: <08/07/28 23:56:21 ptr> + +PRGNAME = sleepycat_perf +SRC_CC = suite.cc sc_perf_suite.cc Added: trunk/complement/explore/perf/DB/Berkeley/sc_perf_suite.cc =================================================================== --- trunk/complement/explore/perf/DB/Berkeley/sc_perf_suite.cc (rev 0) +++ trunk/complement/explore/perf/DB/Berkeley/sc_perf_suite.cc 2008-08-13 16:27:09 UTC (rev 1959) @@ -0,0 +1,56 @@ +// -*- C++ -*- Time-stamp: <08/08/13 13:28:22 yeti> + +/* + * Copyright (c) 2008 + * Petr Ovtchenkov + * + * Licensed under the Academic Free License Version 3.0 + */ + +#include "sc_perf_suite.h" +#include <vector> + +#include <mt/thread> +#include <mt/mutex> + +#include <db_cxx.h> +#include <sys/stat.h> + +using namespace std; + +int EXAM_IMPL(sleepycat_test::hash_open) +{ + DbEnv env( 0 ); + const char logDir[] = "./DB_logs"; + + mkdir( logDir, 0777 ); + + env.set_lg_dir( logDir ); + env.set_flags(DB_AUTO_COMMIT | DB_LOG_INMEMORY | DB_LOG_AUTOREMOVE, 1); + env.open( ".", DB_INIT_TXN | DB_INIT_LOG | DB_CREATE | DB_INIT_MPOOL, 0600); + + Db database( &env, 0 ); + + // This should suffice for most users. + database.set_h_nelem(30); + // The BDB documentation says the fill factor should be + // (pagesize - 32) / (average_key_size + average_data_size + 8); + // For labels, average key size = sizeof(TId) = 16, average data size = 0, + // supposing 4K pages this gives us 169 1/3 for the fill factor. + database.set_h_ffactor(150); + // For opening in the environment we should use a relative path. + database.open( 0, "tmp.db", 0, DB_HASH, DB_CREATE, 0600); + + database.close( 0 ); + + unlink( "tmp.db" ); + unlink( "__db.001" ); + unlink( "__db.002" ); + unlink( "__db.003" ); + unlink( "__db.004" ); + unlink( "__db.005" ); + + rmdir( logDir ); + + return 0; +} Added: trunk/complement/explore/perf/DB/Berkeley/sc_perf_suite.h =================================================================== --- trunk/complement/explore/perf/DB/Berkeley/sc_perf_suite.h (rev 0) +++ trunk/complement/explore/perf/DB/Berkeley/sc_perf_suite.h 2008-08-13 16:27:09 UTC (rev 1959) @@ -0,0 +1,21 @@ +// -*- C++ -*- Time-stamp: <08/08/13 13:26:19 yeti> + +/* + * Copyright (c) 2008 + * Petr Ovtchenkov + * + * Licensed under the Academic Free License Version 3.0 + */ + +#ifndef __ALLOC_PERF_SUITE_H +#define __ALLOC_PERF_SUITE_H + +#include <exam/suite.h> + +class sleepycat_test +{ + public: + int EXAM_DECL(hash_open); +}; + +#endif // __ALLOC_PERF_SUITE_H Added: trunk/complement/explore/perf/DB/Berkeley/suite.cc =================================================================== --- trunk/complement/explore/perf/DB/Berkeley/suite.cc (rev 0) +++ trunk/complement/explore/perf/DB/Berkeley/suite.cc 2008-08-13 16:27:09 UTC (rev 1959) @@ -0,0 +1,30 @@ +// -*- C++ -*- Time-stamp: <08/08/13 13:26:45 yeti> + +/* + * Copyright (c) 2008 + * Petr Ovtchenkov + * + * Licensed under the Academic Free License Version 3.0 + */ + +#include "sc_perf_suite.h" + +#include <exam/suite.h> +#include <iostream> + +using namespace std; + +int main( int, char ** ) +{ + exam::trivial_time_logger tl( cout ); + + exam::test_suite t( "Berkeley DB performance", 20 ); + + t.set_logger( &tl ); + + sleepycat_test st; + + t.add( &sleepycat_test::hash_open, st, "Open DB with DB_HASH" ); + + return t.girdle(); +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |