make the default value of numeric parameter 0, not 1, to make testing for it more natural; also allow passing string parameter to the benchmarks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56294 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -31,6 +31,7 @@ static const char OPTION_LIST = 'l';
|
|||||||
static const char OPTION_AVG_COUNT = 'a';
|
static const char OPTION_AVG_COUNT = 'a';
|
||||||
static const char OPTION_NUM_RUNS = 'n';
|
static const char OPTION_NUM_RUNS = 'n';
|
||||||
static const char OPTION_NUMERIC_PARAM = 'p';
|
static const char OPTION_NUMERIC_PARAM = 'p';
|
||||||
|
static const char OPTION_STRING_PARAM = 's';
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// BenchApp declaration
|
// BenchApp declaration
|
||||||
@@ -54,8 +55,9 @@ public:
|
|||||||
virtual int OnRun();
|
virtual int OnRun();
|
||||||
virtual int OnExit();
|
virtual int OnExit();
|
||||||
|
|
||||||
// accessor
|
// accessors
|
||||||
int GetNumericParameter() const { return m_numParam; }
|
int GetNumericParameter() const { return m_numParam; }
|
||||||
|
const wxString& GetStringParameter() const { return m_strParam; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// list all registered benchmarks
|
// list all registered benchmarks
|
||||||
@@ -66,6 +68,7 @@ private:
|
|||||||
long m_numRuns,
|
long m_numRuns,
|
||||||
m_avgCount,
|
m_avgCount,
|
||||||
m_numParam;
|
m_numParam;
|
||||||
|
wxString m_strParam;
|
||||||
};
|
};
|
||||||
|
|
||||||
IMPLEMENT_APP_CONSOLE(BenchApp)
|
IMPLEMENT_APP_CONSOLE(BenchApp)
|
||||||
@@ -81,6 +84,11 @@ long Bench::GetNumericParameter()
|
|||||||
return wxGetApp().GetNumericParameter();
|
return wxGetApp().GetNumericParameter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxString Bench::GetStringParameter()
|
||||||
|
{
|
||||||
|
return wxGetApp().GetStringParameter();
|
||||||
|
}
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// BenchApp implementation
|
// BenchApp implementation
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
@@ -89,7 +97,7 @@ BenchApp::BenchApp()
|
|||||||
{
|
{
|
||||||
m_avgCount = 10;
|
m_avgCount = 10;
|
||||||
m_numRuns = 10000; // just some default (TODO: switch to time-based one)
|
m_numRuns = 10000; // just some default (TODO: switch to time-based one)
|
||||||
m_numParam = 1;
|
m_numParam = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BenchApp::OnInit()
|
bool BenchApp::OnInit()
|
||||||
@@ -135,9 +143,18 @@ void BenchApp::OnInitCmdLine(wxCmdLineParser& parser)
|
|||||||
wxCMD_LINE_VAL_NUMBER);
|
wxCMD_LINE_VAL_NUMBER);
|
||||||
parser.AddOption(OPTION_NUMERIC_PARAM,
|
parser.AddOption(OPTION_NUMERIC_PARAM,
|
||||||
"num-param",
|
"num-param",
|
||||||
|
wxString::Format
|
||||||
|
(
|
||||||
"numeric parameter used by some benchmark functions "
|
"numeric parameter used by some benchmark functions "
|
||||||
"(default: 1)",
|
"(default: %ld)",
|
||||||
|
m_numParam
|
||||||
|
),
|
||||||
wxCMD_LINE_VAL_NUMBER);
|
wxCMD_LINE_VAL_NUMBER);
|
||||||
|
parser.AddOption(OPTION_STRING_PARAM,
|
||||||
|
"str-param",
|
||||||
|
"string parameter used by some benchmark functions "
|
||||||
|
"(default: empty)",
|
||||||
|
wxCMD_LINE_VAL_STRING);
|
||||||
|
|
||||||
parser.AddParam("benchmark name",
|
parser.AddParam("benchmark name",
|
||||||
wxCMD_LINE_VAL_STRING,
|
wxCMD_LINE_VAL_STRING,
|
||||||
@@ -166,6 +183,7 @@ bool BenchApp::OnCmdLineParsed(wxCmdLineParser& parser)
|
|||||||
parser.Found(OPTION_AVG_COUNT, &m_avgCount);
|
parser.Found(OPTION_AVG_COUNT, &m_avgCount);
|
||||||
parser.Found(OPTION_NUM_RUNS, &m_numRuns);
|
parser.Found(OPTION_NUM_RUNS, &m_numRuns);
|
||||||
parser.Found(OPTION_NUMERIC_PARAM, &m_numParam);
|
parser.Found(OPTION_NUMERIC_PARAM, &m_numParam);
|
||||||
|
parser.Found(OPTION_STRING_PARAM, &m_strParam);
|
||||||
|
|
||||||
// construct sorted array for quick verification of benchmark names
|
// construct sorted array for quick verification of benchmark names
|
||||||
wxSortedArrayString benchmarks;
|
wxSortedArrayString benchmarks;
|
||||||
@@ -201,7 +219,17 @@ int BenchApp::OnRun()
|
|||||||
if ( m_toRun.Index(func->GetName()) == wxNOT_FOUND )
|
if ( m_toRun.Index(func->GetName()) == wxNOT_FOUND )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
wxPrintf("Benchmarking %s(%ld): ", func->GetName(), m_numParam);
|
wxString params;
|
||||||
|
if ( m_numParam )
|
||||||
|
params += wxString::Format(" with N=%ld", m_numParam);
|
||||||
|
if ( !m_strParam.empty() )
|
||||||
|
{
|
||||||
|
if ( !params.empty() )
|
||||||
|
params += " and";
|
||||||
|
params += wxString::Format(" with s=\"%s\"", m_strParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPrintf("Benchmarking %s%s: ", func->GetName(), params);
|
||||||
|
|
||||||
long timeMin = LONG_MAX,
|
long timeMin = LONG_MAX,
|
||||||
timeMax = 0,
|
timeMax = 0,
|
||||||
|
@@ -71,6 +71,14 @@ private:
|
|||||||
*/
|
*/
|
||||||
long GetNumericParameter();
|
long GetNumericParameter();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the string parameter.
|
||||||
|
|
||||||
|
Tests may use this parameter in whatever way they see fit, by default it is
|
||||||
|
empty but can be set to a different value by user from the command line.
|
||||||
|
*/
|
||||||
|
wxString GetStringParameter();
|
||||||
|
|
||||||
} // namespace Bench
|
} // namespace Bench
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -48,7 +48,11 @@ const wxString& GetTestAsciiString()
|
|||||||
static wxString testString;
|
static wxString testString;
|
||||||
if ( testString.empty() )
|
if ( testString.empty() )
|
||||||
{
|
{
|
||||||
for ( long n = 0; n < Bench::GetNumericParameter(); n++ )
|
long num = Bench::GetNumericParameter();
|
||||||
|
if ( !num )
|
||||||
|
num = 1;
|
||||||
|
|
||||||
|
for ( long n = 0; n < num; n++ )
|
||||||
testString += wxString::FromAscii(asciistr);
|
testString += wxString::FromAscii(asciistr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -318,7 +322,11 @@ BENCHMARK_FUNC(ParseHTML)
|
|||||||
|
|
||||||
// this is going to make for some invalid HTML, of course, but it
|
// this is going to make for some invalid HTML, of course, but it
|
||||||
// doesn't really matter
|
// doesn't really matter
|
||||||
for ( long n = 0; n < Bench::GetNumericParameter(); n++ )
|
long num = Bench::GetNumericParameter();
|
||||||
|
if ( !num )
|
||||||
|
num = 1;
|
||||||
|
|
||||||
|
for ( long n = 0; n < num; n++ )
|
||||||
html += html1;
|
html += html1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user