| Index: icu46/source/test/perf/DateFmtPerf/DateFmtPerf.cpp
|
| ===================================================================
|
| --- icu46/source/test/perf/DateFmtPerf/DateFmtPerf.cpp (revision 0)
|
| +++ icu46/source/test/perf/DateFmtPerf/DateFmtPerf.cpp (revision 0)
|
| @@ -0,0 +1,193 @@
|
| +/*
|
| +**********************************************************************
|
| +* Copyright (c) 2002-2010,International Business Machines
|
| +* Corporation and others. All Rights Reserved.
|
| +**********************************************************************
|
| +**********************************************************************
|
| +*/
|
| +
|
| +#include "DateFmtPerf.h"
|
| +#include "uoptions.h"
|
| +#include <stdio.h>
|
| +#include <fstream>
|
| +
|
| +#include <iostream>
|
| +using namespace std;
|
| +
|
| +DateFormatPerfTest::DateFormatPerfTest(int32_t argc, const char* argv[], UErrorCode& status)
|
| +: UPerfTest(argc,argv,status) {
|
| +
|
| + if (locale == NULL){
|
| + locale = "en_US"; // set default locale
|
| + }
|
| +}
|
| +
|
| +DateFormatPerfTest::~DateFormatPerfTest()
|
| +{
|
| +}
|
| +
|
| +UPerfFunction* DateFormatPerfTest::runIndexedTest(int32_t index, UBool exec,const char* &name, char* par) {
|
| +
|
| + //exec = true;
|
| +
|
| + switch (index) {
|
| + TESTCASE(0,DateFmt250);
|
| + TESTCASE(1,DateFmt10000);
|
| + TESTCASE(2,DateFmt100000);
|
| + TESTCASE(3,BreakItWord250);
|
| + TESTCASE(4,BreakItWord10000);
|
| + TESTCASE(5,BreakItChar250);
|
| + TESTCASE(6,BreakItChar10000);
|
| + TESTCASE(7,NumFmt10000);
|
| + TESTCASE(8,NumFmt100000);
|
| + TESTCASE(9,Collation10000);
|
| + TESTCASE(10,Collation100000);
|
| +
|
| + default:
|
| + name = "";
|
| + return NULL;
|
| + }
|
| + return NULL;
|
| +}
|
| +
|
| +
|
| +UPerfFunction* DateFormatPerfTest::DateFmt250(){
|
| + DateFmtFunction* func= new DateFmtFunction(1, locale);
|
| + return func;
|
| +}
|
| +
|
| +UPerfFunction* DateFormatPerfTest::DateFmt10000(){
|
| + DateFmtFunction* func= new DateFmtFunction(40, locale);
|
| + return func;
|
| +}
|
| +
|
| +UPerfFunction* DateFormatPerfTest::DateFmt100000(){
|
| + DateFmtFunction* func= new DateFmtFunction(400, locale);
|
| + return func;
|
| +}
|
| +
|
| +UPerfFunction* DateFormatPerfTest::BreakItWord250(){
|
| + BreakItFunction* func= new BreakItFunction(250, true);
|
| + return func;
|
| +}
|
| +
|
| +UPerfFunction* DateFormatPerfTest::BreakItWord10000(){
|
| + BreakItFunction* func= new BreakItFunction(10000, true);
|
| + return func;
|
| +}
|
| +
|
| +UPerfFunction* DateFormatPerfTest::BreakItChar250(){
|
| + BreakItFunction* func= new BreakItFunction(250, false);
|
| + return func;
|
| +}
|
| +
|
| +UPerfFunction* DateFormatPerfTest::BreakItChar10000(){
|
| + BreakItFunction* func= new BreakItFunction(10000, false);
|
| + return func;
|
| +}
|
| +
|
| +UPerfFunction* DateFormatPerfTest::NumFmt10000(){
|
| + NumFmtFunction* func= new NumFmtFunction(10000, locale);
|
| + return func;
|
| +}
|
| +
|
| +UPerfFunction* DateFormatPerfTest::NumFmt100000(){
|
| + NumFmtFunction* func= new NumFmtFunction(100000, locale);
|
| + return func;
|
| +}
|
| +
|
| +UPerfFunction* DateFormatPerfTest::Collation10000(){
|
| + CollationFunction* func= new CollationFunction(40, locale);
|
| + return func;
|
| +}
|
| +
|
| +UPerfFunction* DateFormatPerfTest::Collation100000(){
|
| + CollationFunction* func= new CollationFunction(400, locale);
|
| + return func;
|
| +}
|
| +
|
| +
|
| +
|
| +int main(int argc, const char* argv[]){
|
| +
|
| + // -x Filename.xml
|
| + if((argc>1)&&(strcmp(argv[1],"-x") == 0))
|
| + {
|
| + if(argc < 3) {
|
| + fprintf(stderr, "Usage: %s -x <outfile>.xml\n", argv[0]);
|
| + return 1;
|
| + // not enough arguments
|
| + }
|
| +
|
| + cout << "ICU version - " << U_ICU_VERSION << endl;
|
| + UErrorCode status = U_ZERO_ERROR;
|
| +
|
| + // Declare functions
|
| + UPerfFunction *functions[5];
|
| + functions[0] = new DateFmtFunction(40, "en");
|
| + functions[1] = new BreakItFunction(10000, true); // breakIterator word
|
| + functions[2] = new BreakItFunction(10000, false); // breakIterator char
|
| + functions[3] = new NumFmtFunction(100000, "en");
|
| + functions[4] = new CollationFunction(400, "en");
|
| +
|
| + // Perform time recording
|
| + double t[5];
|
| + for(int i = 0; i < 5; i++) t[i] = 0;
|
| +
|
| + for(int i = 0; i < 10; i++)
|
| + for(int j = 0; j < 5; j++)
|
| + t[j] += (functions[j]->time(1, &status) / 10);
|
| +
|
| +
|
| + // Output results as .xml
|
| + ofstream out;
|
| + out.open(argv[2]);
|
| +
|
| + out << "<perfTestResults icu=\"c\" version=\"" << U_ICU_VERSION << "\">" << endl;
|
| +
|
| + for(int i = 0; i < 5; i++)
|
| + {
|
| + out << " <perfTestResult" << endl;
|
| + out << " test=\"";
|
| + switch(i)
|
| + {
|
| + case 0: out << "DateFormat"; break;
|
| + case 1: out << "BreakIterator Word"; break;
|
| + case 2: out << "BreakIterator Char"; break;
|
| + case 3: out << "NumbFormat"; break;
|
| + case 4: out << "Collation"; break;
|
| + }
|
| + out << "\"" << endl;
|
| + int iter = 10000;
|
| + if(i > 2) iter = 100000;
|
| + out << " iterations=\"" << iter << "\"" << endl;
|
| + out << " time=\"" << t[i] << "\" />" << endl;
|
| + }
|
| + out << "</perfTestResults>" << endl;
|
| + out.close();
|
| +
|
| + return 0;
|
| + }
|
| +
|
| +
|
| + // Normal performance test mode
|
| + UErrorCode status = U_ZERO_ERROR;
|
| +
|
| + DateFormatPerfTest test(argc, argv, status);
|
| +
|
| +
|
| + if(U_FAILURE(status)){ // ERROR HERE!!!
|
| + cout << "initialize failed! " << status << endl;
|
| + return status;
|
| + }
|
| + //cout << "Done initializing!\n" << endl;
|
| +
|
| + if(test.run()==FALSE){
|
| + cout << "run failed!" << endl;
|
| + fprintf(stderr,"FAILED: Tests could not be run please check the arguments.\n");
|
| + return -1;
|
| + }
|
| + cout << "done!" << endl;
|
| +
|
| + return 0;
|
| +}
|
|
|
| Property changes on: icu46/source/test/perf/DateFmtPerf/DateFmtPerf.cpp
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|