diff options
Diffstat (limited to 'Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.cpp')
-rw-r--r-- | Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.cpp | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.cpp new file mode 100644 index 00000000000..afb98212443 --- /dev/null +++ b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.cpp @@ -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; +}
\ No newline at end of file |