git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56294
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
static const char OPTION_AVG_COUNT = 'a';
static const char OPTION_NUM_RUNS = 'n';
static const char OPTION_NUMERIC_PARAM = 'p';
static const char OPTION_AVG_COUNT = 'a';
static const char OPTION_NUM_RUNS = 'n';
static const char OPTION_NUMERIC_PARAM = 'p';
+static const char OPTION_STRING_PARAM = 's';
// ----------------------------------------------------------------------------
// BenchApp declaration
// ----------------------------------------------------------------------------
// BenchApp declaration
virtual int OnRun();
virtual int OnExit();
virtual int OnRun();
virtual int OnExit();
int GetNumericParameter() const { return m_numParam; }
int GetNumericParameter() const { return m_numParam; }
+ const wxString& GetStringParameter() const { return m_strParam; }
private:
// list all registered benchmarks
private:
// list all registered benchmarks
long m_numRuns,
m_avgCount,
m_numParam;
long m_numRuns,
m_avgCount,
m_numParam;
};
IMPLEMENT_APP_CONSOLE(BenchApp)
};
IMPLEMENT_APP_CONSOLE(BenchApp)
return wxGetApp().GetNumericParameter();
}
return wxGetApp().GetNumericParameter();
}
+wxString Bench::GetStringParameter()
+{
+ return wxGetApp().GetStringParameter();
+}
+
// ============================================================================
// BenchApp implementation
// ============================================================================
// ============================================================================
// BenchApp implementation
// ============================================================================
{
m_avgCount = 10;
m_numRuns = 10000; // just some default (TODO: switch to time-based one)
{
m_avgCount = 10;
m_numRuns = 10000; // just some default (TODO: switch to time-based one)
}
bool BenchApp::OnInit()
}
bool BenchApp::OnInit()
wxCMD_LINE_VAL_NUMBER);
parser.AddOption(OPTION_NUMERIC_PARAM,
"num-param",
wxCMD_LINE_VAL_NUMBER);
parser.AddOption(OPTION_NUMERIC_PARAM,
"num-param",
- "numeric parameter used by some benchmark functions "
- "(default: 1)",
+ wxString::Format
+ (
+ "numeric parameter used by some benchmark functions "
+ "(default: %ld)",
+ m_numParam
+ ),
+ parser.AddOption(OPTION_STRING_PARAM,
+ "str-param",
+ "string parameter used by some benchmark functions "
+ "(default: empty)",
+ wxCMD_LINE_VAL_STRING);
parser.AddParam("benchmark name",
wxCMD_LINE_VAL_STRING,
parser.AddParam("benchmark name",
wxCMD_LINE_VAL_STRING,
parser.Found(OPTION_AVG_COUNT, &m_avgCount);
parser.Found(OPTION_NUM_RUNS, &m_numRuns);
parser.Found(OPTION_NUMERIC_PARAM, &m_numParam);
parser.Found(OPTION_AVG_COUNT, &m_avgCount);
parser.Found(OPTION_NUM_RUNS, &m_numRuns);
parser.Found(OPTION_NUMERIC_PARAM, &m_numParam);
+ parser.Found(OPTION_STRING_PARAM, &m_strParam);
// construct sorted array for quick verification of benchmark names
wxSortedArrayString benchmarks;
// construct sorted array for quick verification of benchmark names
wxSortedArrayString benchmarks;
if ( m_toRun.Index(func->GetName()) == wxNOT_FOUND )
continue;
if ( m_toRun.Index(func->GetName()) == wxNOT_FOUND )
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,
timeMax = 0,
long timeMin = LONG_MAX,
timeMax = 0,
*/
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();
+
static wxString testString;
if ( testString.empty() )
{
static wxString testString;
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);
}
// this is going to make for some invalid HTML, of course, but it
// doesn't really matter
// this is going to make for some invalid HTML, of course, but it
// 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++ )