3 #include "map2/map_find_string.h"
6 CPPUNIT_TEST_SUITE_REGISTRATION( Map_find_string );
8 size_t Map_find_string::c_nThreadCount = 8 ; // thread count
9 size_t Map_find_string::c_nMapSize = 20000000 ; // map size (count of searching item)
10 size_t Map_find_string::c_nPercentExists = 50 ; // percent of existing keys in searching sequence
11 size_t Map_find_string::c_nPassCount = 2;
12 size_t Map_find_string::c_nMaxLoadFactor = 8 ; // maximum load factor
13 bool Map_find_string::c_bPrintGCState = true;
15 void Map_find_string::generateSequence()
17 size_t nPercent = c_nPercentExists;
21 else if ( nPercent < 1 )
26 std::vector<std::string> const & arrString = CppUnitMini::TestCase::getTestStrings();
27 size_t nSize = arrString.size();
28 if ( nSize > c_nMapSize )
30 m_Arr.resize( nSize );
31 for ( size_t i = 0; i < nSize; ++i ) {
32 m_Arr[i].pKey = &( arrString[i] );
33 m_Arr[i].bExists = CppUnitMini::Rand( 100 ) <= nPercent;
34 if ( m_Arr[i].bExists )
39 void Map_find_string::initTestSequence()
44 CPPUNIT_MSG( "Generating test data...");
47 CPPUNIT_MSG( " Duration=" << timer.duration() );
48 CPPUNIT_MSG( "Map size=" << m_nRealMapSize << " find key loop=" << m_Arr.size() << " (" << c_nPercentExists << "% success)" );
49 CPPUNIT_MSG( "Thread count=" << c_nThreadCount << " Pass count=" << c_nPassCount );
53 void Map_find_string::setUpParams( const CppUnitMini::TestCfg& cfg )
55 c_nThreadCount = cfg.getSizeT("ThreadCount", c_nThreadCount );
56 c_nMapSize = cfg.getSizeT("MapSize", c_nMapSize );
57 c_nPercentExists = cfg.getSizeT("PercentExists", c_nPercentExists );
58 c_nPassCount = cfg.getSizeT("PassCount", c_nPassCount );
59 c_nMaxLoadFactor = cfg.getSizeT("MaxLoadFactor", c_nMaxLoadFactor );
60 c_bPrintGCState = cfg.getBool("PrintGCStateFlag", true );
63 void Map_find_string::myRun(const char *in_name, bool invert /*= false*/)
65 setUpParams( m_Cfg.get( "Map_find_string" ));
67 run_MichaelMap(in_name, invert);
68 run_SplitList(in_name, invert);
69 run_SkipListMap(in_name, invert);
70 run_EllenBinTreeMap(in_name, invert);
71 run_BronsonAVLTreeMap(in_name, invert);
72 run_StripedMap(in_name, invert);
73 run_RefinableMap(in_name, invert);
74 run_CuckooMap(in_name, invert);
75 run_StdMap(in_name, invert);