| Index: source/test/perf/DateFmtPerf/DateFmtPerf.h
|
| diff --git a/source/test/perf/DateFmtPerf/DateFmtPerf.h b/source/test/perf/DateFmtPerf/DateFmtPerf.h
|
| deleted file mode 100644
|
| index 033405316002e82b341dea6d4500ffc74fa20130..0000000000000000000000000000000000000000
|
| --- a/source/test/perf/DateFmtPerf/DateFmtPerf.h
|
| +++ /dev/null
|
| @@ -1,845 +0,0 @@
|
| -/*
|
| -**********************************************************************
|
| -* Copyright (c) 2002-2014,International Business Machines
|
| -* Corporation and others. All Rights Reserved.
|
| -**********************************************************************
|
| -**********************************************************************
|
| -*/
|
| -
|
| -#ifndef _DATEFMTPERF_H
|
| -#define _DATEFMTPERF_H
|
| -
|
| -
|
| -#include "unicode/stringpiece.h"
|
| -#include "unicode/unistr.h"
|
| -#include "unicode/uperf.h"
|
| -
|
| -#include "unicode/dtitvfmt.h"
|
| -#include "unicode/utypes.h"
|
| -#include "unicode/datefmt.h"
|
| -#include "unicode/calendar.h"
|
| -#include "unicode/uclean.h"
|
| -#include "unicode/brkiter.h"
|
| -#include "unicode/numfmt.h"
|
| -#include "unicode/coll.h"
|
| -#include "util.h"
|
| -
|
| -#include "datedata.h"
|
| -#include "breakdata.h"
|
| -#include "collationdata.h"
|
| -
|
| -#include <stdlib.h>
|
| -#include <string.h>
|
| -
|
| -#include <fstream>
|
| -
|
| -#include <iostream>
|
| -using namespace std;
|
| -
|
| -// Stubs for Windows API functions when building on UNIXes.
|
| -//
|
| -#if U_PLATFORM_USES_ONLY_WIN32_API
|
| -// do nothing
|
| -#else
|
| -#define _UNICODE
|
| -typedef int DWORD;
|
| -inline int FoldStringW(DWORD dwMapFlags, const UChar* lpSrcStr,int cchSrc, UChar* lpDestStr,int cchDest);
|
| -#endif
|
| -
|
| -class BreakItFunction : public UPerfFunction
|
| -{
|
| -private:
|
| - int num;
|
| - bool wordIteration;
|
| -
|
| -public:
|
| -
|
| - BreakItFunction(){num = -1;}
|
| - BreakItFunction(int a, bool b){num = a; wordIteration = b;}
|
| -
|
| - virtual void call(UErrorCode * status)
|
| - {
|
| - BreakIterator* boundary;
|
| -
|
| - if(wordIteration)
|
| - {
|
| - for(int i = 0; i < num; i++)
|
| - {
|
| - boundary = BreakIterator::createWordInstance("en", *status);
|
| - boundary->setText(str);
|
| -
|
| - int32_t start = boundary->first();
|
| - for (int32_t end = boundary->next();
|
| - end != BreakIterator::DONE;
|
| - start = end, end = boundary->next())
|
| - {
|
| - printTextRange( *boundary, start, end );
|
| - }
|
| - }
|
| - }
|
| -
|
| - else // character iteration
|
| - {
|
| - for(int i = 0; i < num; i++)
|
| - {
|
| - boundary = BreakIterator::createCharacterInstance(Locale::getUS(), *status);
|
| - boundary->setText(str);
|
| -
|
| - int32_t start = boundary->first();
|
| - for (int32_t end = boundary->next();
|
| - end != BreakIterator::DONE;
|
| - start = end, end = boundary->next())
|
| - {
|
| - printTextRange( *boundary, start, end );
|
| - }
|
| - }
|
| - }
|
| -
|
| -
|
| - }
|
| -
|
| - virtual long getOperationsPerIteration()
|
| - {
|
| - if(wordIteration) return 125*num;
|
| - else return 355*num;
|
| - }
|
| -
|
| - void printUnicodeString(const UnicodeString &s) {
|
| - char charBuf[1000];
|
| - s.extract(0, s.length(), charBuf, sizeof(charBuf)-1, 0);
|
| - charBuf[sizeof(charBuf)-1] = 0;
|
| - printf("%s", charBuf);
|
| - }
|
| -
|
| -
|
| - void printTextRange( BreakIterator& iterator,
|
| - int32_t start, int32_t end )
|
| - {
|
| - CharacterIterator *strIter = iterator.getText().clone();
|
| - UnicodeString s;
|
| - strIter->getText(s);
|
| - //printUnicodeString(UnicodeString(s, start, end-start));
|
| - //puts("");
|
| - delete strIter;
|
| - }
|
| -
|
| - // Print the given string to stdout (for debugging purposes)
|
| - void uprintf(const UnicodeString &str) {
|
| - char *buf = 0;
|
| - int32_t len = str.length();
|
| - int32_t bufLen = len + 16;
|
| - int32_t actualLen;
|
| - buf = new char[bufLen + 1];
|
| - actualLen = str.extract(0, len, buf/*, bufLen*/); // Default codepage conversion
|
| - buf[actualLen] = 0;
|
| - printf("%s", buf);
|
| - delete[] buf;
|
| - }
|
| -
|
| -};
|
| -
|
| -class DateFmtFunction : public UPerfFunction
|
| -{
|
| -
|
| -private:
|
| - int num;
|
| - char locale[25];
|
| -public:
|
| -
|
| - DateFmtFunction()
|
| - {
|
| - num = -1;
|
| - }
|
| -
|
| - DateFmtFunction(int a, const char* loc)
|
| - {
|
| - num = a;
|
| - strcpy(locale, loc);
|
| - }
|
| -
|
| - virtual void call(UErrorCode* status)
|
| - {
|
| -
|
| - UErrorCode status2 = U_ZERO_ERROR;
|
| - Calendar *cal;
|
| - TimeZone *zone;
|
| - UnicodeString str;
|
| - UDate date;
|
| -
|
| - cal = Calendar::createInstance(status2);
|
| - check(status2, "Calendar::createInstance");
|
| - zone = TimeZone::createTimeZone("GMT"); // Create a GMT zone
|
| - cal->adoptTimeZone(zone);
|
| -
|
| - Locale loc(locale);
|
| - DateFormat *fmt;
|
| - fmt = DateFormat::createDateTimeInstance(
|
| - DateFormat::kShort, DateFormat::kFull, loc);
|
| -
|
| -
|
| - // (dates are imported from datedata.h)
|
| - for(int j = 0; j < num; j++)
|
| - for(int i = 0; i < NUM_DATES; i++)
|
| - {
|
| - cal->clear();
|
| - cal->set(years[i], months[i], days[i]);
|
| - date = cal->getTime(status2);
|
| - check(status2, "Calendar::getTime");
|
| -
|
| - fmt->setCalendar(*cal);
|
| -
|
| - // Format the date
|
| - str.remove();
|
| - fmt->format(date, str, status2);
|
| -
|
| -
|
| - // Display the formatted date string
|
| - //uprintf(str);
|
| - //printf("\n");
|
| -
|
| - }
|
| -
|
| - delete fmt;
|
| - delete cal;
|
| - //u_cleanup();
|
| - }
|
| -
|
| - virtual long getOperationsPerIteration()
|
| - {
|
| - return NUM_DATES * num;
|
| - }
|
| -
|
| - // Print the given string to stdout (for debugging purposes)
|
| - void uprintf(const UnicodeString &str) {
|
| - char *buf = 0;
|
| - int32_t len = str.length();
|
| - int32_t bufLen = len + 16;
|
| - int32_t actualLen;
|
| - buf = new char[bufLen + 1];
|
| - actualLen = str.extract(0, len, buf/*, bufLen*/); // Default codepage conversion
|
| - buf[actualLen] = 0;
|
| - printf("%s", buf);
|
| - delete[] buf;
|
| - }
|
| -
|
| - // Verify that a UErrorCode is successful; exit(1) if not
|
| - void check(UErrorCode& status, const char* msg) {
|
| - if (U_FAILURE(status)) {
|
| - printf("ERROR: %s (%s)\n", u_errorName(status), msg);
|
| - exit(1);
|
| - }
|
| - }
|
| -
|
| -};
|
| -
|
| -class DateFmtCreateFunction : public UPerfFunction
|
| -{
|
| -
|
| -private:
|
| - int num;
|
| - char locale[25];
|
| -public:
|
| -
|
| - DateFmtCreateFunction(int a, const char* loc)
|
| - {
|
| - num = a;
|
| - strcpy(locale, loc);
|
| - }
|
| -
|
| - virtual void call(UErrorCode* /* status */)
|
| - {
|
| -
|
| - Locale loc(locale);
|
| - DateFormat *fmt;
|
| - // (dates are imported from datedata.h)
|
| - for(int j = 0; j < num; j++) {
|
| - fmt = DateFormat::createDateTimeInstance(
|
| - DateFormat::kShort, DateFormat::kFull, loc);
|
| - delete fmt;
|
| - }
|
| - }
|
| -
|
| - virtual long getOperationsPerIteration()
|
| - {
|
| - return num;
|
| - }
|
| -
|
| -};
|
| -
|
| -class DateFmtCopyFunction : public UPerfFunction
|
| -{
|
| -
|
| -private:
|
| - int num;
|
| - char locale[25];
|
| -public:
|
| -
|
| - DateFmtCopyFunction()
|
| - {
|
| - num = -1;
|
| - }
|
| -
|
| - DateFmtCopyFunction(int a, const char* loc)
|
| - {
|
| - num = a;
|
| - strcpy(locale, loc);
|
| - }
|
| -
|
| - virtual void call(UErrorCode* /* status */)
|
| - {
|
| - Locale loc(locale);
|
| - UErrorCode status2 = U_ZERO_ERROR;
|
| - DateFormat *fmt = DateFormat::createDateTimeInstance(
|
| - DateFormat::kShort, DateFormat::kFull, loc);
|
| - for(int j = 0; j < num; j++) {
|
| - Format *cp = fmt->clone();
|
| - delete cp;
|
| - }
|
| - delete fmt;
|
| - }
|
| -
|
| - virtual long getOperationsPerIteration()
|
| - {
|
| - return num;
|
| - }
|
| -
|
| - // Verify that a UErrorCode is successful; exit(1) if not
|
| - void check(UErrorCode& status, const char* msg) {
|
| - if (U_FAILURE(status)) {
|
| - printf("ERROR: %s (%s)\n", u_errorName(status), msg);
|
| - exit(1);
|
| - }
|
| - }
|
| -
|
| -};
|
| -
|
| -class DIFCreateFunction : public UPerfFunction
|
| -{
|
| -
|
| -private:
|
| - int num;
|
| - char locale[25];
|
| -public:
|
| -
|
| - DIFCreateFunction()
|
| - {
|
| - num = -1;
|
| - }
|
| -
|
| - DIFCreateFunction(int a, const char* loc)
|
| - {
|
| - num = a;
|
| - strcpy(locale, loc);
|
| - }
|
| -
|
| - virtual void call(UErrorCode* /* status */)
|
| - {
|
| - UErrorCode status2 = U_ZERO_ERROR;
|
| - Calendar *cal;
|
| - TimeZone *zone;
|
| -
|
| - cal = Calendar::createInstance(status2);
|
| - check(status2, "Calendar::createInstance");
|
| - zone = TimeZone::createTimeZone("GMT"); // Create a GMT zone
|
| - cal->adoptTimeZone(zone);
|
| -
|
| - Locale loc(locale);
|
| - UnicodeString skeleton("yMMMMdHms");
|
| -
|
| - for(int j = 0; j < num; j++) {
|
| - DateIntervalFormat* fmt(DateIntervalFormat::createInstance(skeleton, loc, status2));
|
| - delete fmt;
|
| - }
|
| - delete cal;
|
| - }
|
| -
|
| - virtual long getOperationsPerIteration()
|
| - {
|
| - return num;
|
| - }
|
| -
|
| - // Verify that a UErrorCode is successful; exit(1) if not
|
| - void check(UErrorCode& status, const char* msg) {
|
| - if (U_FAILURE(status)) {
|
| - printf("ERROR: %s (%s)\n", u_errorName(status), msg);
|
| - exit(1);
|
| - }
|
| - }
|
| -
|
| -};
|
| -
|
| -class TimeZoneCreateFunction : public UPerfFunction
|
| -{
|
| -
|
| -private:
|
| - int num;
|
| - char locale[25];
|
| -public:
|
| -
|
| - TimeZoneCreateFunction()
|
| - {
|
| - num = -1;
|
| - }
|
| -
|
| - TimeZoneCreateFunction(int a, const char* loc)
|
| - {
|
| - num = a;
|
| - strcpy(locale, loc);
|
| - }
|
| -
|
| - virtual void call(UErrorCode* /* status */)
|
| - {
|
| - Locale loc(locale);
|
| - UnicodeString tzname("UTC");
|
| - for(int j = 0; j < num; j++) {
|
| - TimeZone* tz(TimeZone::createTimeZone(tzname));
|
| - delete tz;
|
| - }
|
| - }
|
| -
|
| - virtual long getOperationsPerIteration()
|
| - {
|
| - return num;
|
| - }
|
| -
|
| - // Verify that a UErrorCode is successful; exit(1) if not
|
| - void check(UErrorCode& status, const char* msg) {
|
| - if (U_FAILURE(status)) {
|
| - printf("ERROR: %s (%s)\n", u_errorName(status), msg);
|
| - exit(1);
|
| - }
|
| - }
|
| -
|
| -};
|
| -
|
| -class DTPatternGeneratorCreateFunction : public UPerfFunction
|
| -{
|
| -
|
| -private:
|
| - int num;
|
| - char locale[25];
|
| -public:
|
| -
|
| - DTPatternGeneratorCreateFunction()
|
| - {
|
| - num = -1;
|
| - }
|
| -
|
| - DTPatternGeneratorCreateFunction(int a, const char* loc)
|
| - {
|
| - num = a;
|
| - strcpy(locale, loc);
|
| - }
|
| -
|
| - virtual void call(UErrorCode* /* status */)
|
| - {
|
| - UErrorCode status2 = U_ZERO_ERROR;
|
| - Locale loc(locale);
|
| -
|
| - for(int j = 0; j < num; j++) {
|
| - DateTimePatternGenerator* gen(DateTimePatternGenerator::createInstance(loc, status2));
|
| - delete gen;
|
| - }
|
| - }
|
| -
|
| - virtual long getOperationsPerIteration()
|
| - {
|
| - return num;
|
| - }
|
| -
|
| - // Verify that a UErrorCode is successful; exit(1) if not
|
| - void check(UErrorCode& status, const char* msg) {
|
| - if (U_FAILURE(status)) {
|
| - printf("ERROR: %s (%s)\n", u_errorName(status), msg);
|
| - exit(1);
|
| - }
|
| - }
|
| -
|
| -};
|
| -
|
| -class DTPatternGeneratorCopyFunction : public UPerfFunction
|
| -{
|
| -
|
| -private:
|
| - int num;
|
| - char locale[25];
|
| -public:
|
| -
|
| - DTPatternGeneratorCopyFunction()
|
| - {
|
| - num = -1;
|
| - }
|
| -
|
| - DTPatternGeneratorCopyFunction(int a, const char* loc)
|
| - {
|
| - num = a;
|
| - strcpy(locale, loc);
|
| - }
|
| -
|
| - virtual void call(UErrorCode* /* status */)
|
| - {
|
| - UErrorCode status2 = U_ZERO_ERROR;
|
| - Locale loc(locale);
|
| - DateTimePatternGenerator* gen(DateTimePatternGenerator::createInstance(loc, status2));
|
| -
|
| - for(int j = 0; j < num; j++) {
|
| - DateTimePatternGenerator *cl = gen->clone();
|
| - delete cl;
|
| - }
|
| - delete gen;
|
| - }
|
| -
|
| - virtual long getOperationsPerIteration()
|
| - {
|
| - return num;
|
| - }
|
| -
|
| - // Verify that a UErrorCode is successful; exit(1) if not
|
| - void check(UErrorCode& status, const char* msg) {
|
| - if (U_FAILURE(status)) {
|
| - printf("ERROR: %s (%s)\n", u_errorName(status), msg);
|
| - exit(1);
|
| - }
|
| - }
|
| -
|
| -};
|
| -
|
| -class DTPatternGeneratorBestValueFunction : public UPerfFunction
|
| -{
|
| -
|
| -private:
|
| - int num;
|
| - char locale[25];
|
| -public:
|
| -
|
| - DTPatternGeneratorBestValueFunction()
|
| - {
|
| - num = -1;
|
| - }
|
| -
|
| - DTPatternGeneratorBestValueFunction(int a, const char* loc)
|
| - {
|
| - num = a;
|
| - strcpy(locale, loc);
|
| - }
|
| -
|
| - virtual void call(UErrorCode* /* status */)
|
| - {
|
| - UErrorCode status2 = U_ZERO_ERROR;
|
| - Locale loc(locale);
|
| - DateTimePatternGenerator* gen(DateTimePatternGenerator::createInstance(loc, status2));
|
| - UnicodeString skeleton("yMMMMdHms");
|
| -
|
| - for(int j = 0; j < num; j++) {
|
| - gen->getBestPattern(skeleton, status2);
|
| - }
|
| - check(status2, "getBestPattern");
|
| - delete gen;
|
| - }
|
| -
|
| - virtual long getOperationsPerIteration()
|
| - {
|
| - return num;
|
| - }
|
| -
|
| - // Verify that a UErrorCode is successful; exit(1) if not
|
| - void check(UErrorCode& status, const char* msg) {
|
| - if (U_FAILURE(status)) {
|
| - printf("ERROR: %s (%s)\n", u_errorName(status), msg);
|
| - exit(1);
|
| - }
|
| - }
|
| -
|
| -};
|
| -
|
| -class NumFmtFunction : public UPerfFunction
|
| -{
|
| -
|
| -private:
|
| - int num;
|
| - char locale[25];
|
| -public:
|
| -
|
| - NumFmtFunction()
|
| - {
|
| - num = -1;
|
| - }
|
| -
|
| - NumFmtFunction(int a, const char* loc)
|
| - {
|
| - num = a;
|
| - strcpy(locale, loc);
|
| - }
|
| -
|
| - virtual void call(UErrorCode* status2)
|
| - {
|
| - Locale loc(locale);
|
| - UErrorCode status = U_ZERO_ERROR;
|
| -
|
| - // Create a number formatter for the locale
|
| - NumberFormat *fmt = NumberFormat::createInstance(loc, status);
|
| -
|
| - // Parse a string. The string uses the digits '0' through '9'
|
| - // and the decimal separator '.', standard in the US locale
|
| -
|
| - for(int i = 0; i < num; i++)
|
| - {
|
| - UnicodeString str("9876543210.123");
|
| - Formattable result;
|
| - fmt->parse(str, result, status);
|
| -
|
| - //uprintf(formattableToString(result));
|
| - //printf("\n");
|
| -
|
| - // Take the number parsed above, and use the formatter to
|
| - // format it.
|
| - str.remove(); // format() will APPEND to this string
|
| - fmt->format(result, str, status);
|
| -
|
| - //uprintf(str);
|
| - //printf("\n");
|
| - }
|
| -
|
| - delete fmt; // Release the storage used by the formatter
|
| - }
|
| -
|
| - enum {
|
| - U_SPACE=0x20,
|
| - U_DQUOTE=0x22,
|
| - U_COMMA=0x2c,
|
| - U_LEFT_SQUARE_BRACKET=0x5b,
|
| - U_BACKSLASH=0x5c,
|
| - U_RIGHT_SQUARE_BRACKET=0x5d,
|
| - U_SMALL_U=0x75
|
| - };
|
| -
|
| - // Create a display string for a formattable
|
| - UnicodeString formattableToString(const Formattable& f) {
|
| - switch (f.getType()) {
|
| - case Formattable::kDate:
|
| - // TODO: Finish implementing this
|
| - return UNICODE_STRING_SIMPLE("Formattable_DATE_TBD");
|
| - case Formattable::kDouble:
|
| - {
|
| - char buf[256];
|
| - sprintf(buf, "%gD", f.getDouble());
|
| - return UnicodeString(buf, "");
|
| - }
|
| - case Formattable::kLong:
|
| - case Formattable::kInt64:
|
| - {
|
| - char buf[256];
|
| - sprintf(buf, "%ldL", f.getLong());
|
| - return UnicodeString(buf, "");
|
| - }
|
| - case Formattable::kString:
|
| - return UnicodeString((UChar)U_DQUOTE).append(f.getString()).append((UChar)U_DQUOTE);
|
| - case Formattable::kArray:
|
| - {
|
| - int32_t i, count;
|
| - const Formattable* array = f.getArray(count);
|
| - UnicodeString result((UChar)U_LEFT_SQUARE_BRACKET);
|
| - for (i=0; i<count; ++i) {
|
| - if (i > 0) {
|
| - (result += (UChar)U_COMMA) += (UChar)U_SPACE;
|
| - }
|
| - result += formattableToString(array[i]);
|
| - }
|
| - result += (UChar)U_RIGHT_SQUARE_BRACKET;
|
| - return result;
|
| - }
|
| - default:
|
| - return UNICODE_STRING_SIMPLE("INVALID_Formattable");
|
| - }
|
| - }
|
| -
|
| - virtual long getOperationsPerIteration()
|
| - {
|
| - return num;
|
| - }
|
| -
|
| - // Print the given string to stdout using the UTF-8 converter (for debugging purposes only)
|
| - void uprintf(const UnicodeString &str) {
|
| - char stackBuffer[100];
|
| - char *buf = 0;
|
| -
|
| - int32_t bufLen = str.extract(0, 0x7fffffff, stackBuffer, sizeof(stackBuffer), "UTF-8");
|
| - if(bufLen < sizeof(stackBuffer)) {
|
| - buf = stackBuffer;
|
| - } else {
|
| - buf = new char[bufLen + 1];
|
| - bufLen = str.extract(0, 0x7fffffff, buf, bufLen + 1, "UTF-8");
|
| - }
|
| - printf("%s", buf);
|
| - if(buf != stackBuffer) {
|
| - delete[] buf;
|
| - }
|
| - }
|
| -};
|
| -
|
| -
|
| -
|
| -#define NUM_STRING "9876543210.123"
|
| -#define NUM_NUM 9876543210.123
|
| -class StdioNumFmtFunction : public UPerfFunction
|
| -{
|
| -
|
| - private:
|
| - int num;
|
| - char locale[25];
|
| - public:
|
| -
|
| - StdioNumFmtFunction()
|
| - {
|
| - num = -1;
|
| - }
|
| -
|
| - StdioNumFmtFunction(int a, const char* loc)
|
| - {
|
| - num = a;
|
| - strcpy(locale, loc);
|
| - }
|
| -
|
| - virtual void call(UErrorCode* status2)
|
| - {
|
| - Locale loc(locale);
|
| - UErrorCode status = U_ZERO_ERROR;
|
| -
|
| - // Parse a string. The string uses the digits '0' through '9'
|
| - // and the decimal separator '.', standard in the US locale
|
| -
|
| - double result;
|
| - char outbuf[500];
|
| - const char *str = NUM_STRING;
|
| -
|
| - for(int i = 0; i < num; i++)
|
| - {
|
| - if(sscanf(str, "%lg", &result)!=1) {
|
| - cout << "Failed Stdio: failed to sscanf" << endl;
|
| - *status2 = U_PARSE_ERROR;
|
| - return;
|
| - }
|
| -
|
| - sprintf(outbuf, "%lg", result);
|
| - }
|
| -
|
| - if(result!=NUM_NUM) {
|
| - cout << "Failed Stdio: sscanf got wrong result, expected " << NUM_NUM << " got " << result << endl;
|
| - *status2 = U_PARSE_ERROR;
|
| - }
|
| - if(strcmp(str,NUM_STRING)) {
|
| - cout << "Failed Stdio: sprintf got wrong result, expected " << NUM_STRING << " got " << str << endl;
|
| - *status2 = U_PARSE_ERROR;
|
| - }
|
| - }
|
| -
|
| - virtual long getOperationsPerIteration()
|
| - {
|
| - return num;
|
| - }
|
| -
|
| -};
|
| -
|
| -class CollationFunction : public UPerfFunction
|
| -{
|
| -
|
| -private:
|
| - int num;
|
| - char locale[25];
|
| - UnicodeString *collation_strings;
|
| -
|
| - /**
|
| - * Unescape the strings
|
| - */
|
| - void init() {
|
| - uint32_t listSize = sizeof(collation_strings_escaped)/sizeof(collation_strings_escaped[0]);
|
| - collation_strings = new UnicodeString[listSize];
|
| - for(uint32_t k=0;k<listSize;k++) {
|
| - collation_strings[k] = collation_strings_escaped[k].unescape();
|
| - }
|
| - UnicodeString shorty((UChar32)0x12345);
|
| - }
|
| -public:
|
| -
|
| - CollationFunction()
|
| - {
|
| - num = -1;
|
| -
|
| - init();
|
| - }
|
| -
|
| - ~CollationFunction() {
|
| - delete [] collation_strings;
|
| - }
|
| -
|
| - CollationFunction(int a, const char* loc)
|
| - {
|
| - num = a;
|
| - strcpy(locale, loc);
|
| - init();
|
| - }
|
| -
|
| - virtual void call(UErrorCode* status2)
|
| - {
|
| - uint32_t listSize = sizeof(collation_strings_escaped)/sizeof(collation_strings_escaped[0]);
|
| - UErrorCode status = U_ZERO_ERROR;
|
| - Collator *coll = Collator::createInstance(Locale(locale), status);
|
| -
|
| - for(int k = 0; k < num; k++)
|
| - {
|
| - uint32_t i, j;
|
| - for(i=listSize-1; i>=1; i--) {
|
| - for(j=0; j<i; j++) {
|
| - if(coll->compare(collation_strings[j], collation_strings[j+1]) == UCOL_LESS) {
|
| - //cout << "Success!" << endl;
|
| - }
|
| - }
|
| - }
|
| - }
|
| - delete coll;
|
| - }
|
| -
|
| - virtual long getOperationsPerIteration()
|
| - {
|
| - return num;
|
| - }
|
| -};
|
| -
|
| -class DateFormatPerfTest : public UPerfTest
|
| -{
|
| -private:
|
| -
|
| -public:
|
| -
|
| - DateFormatPerfTest(int32_t argc, const char* argv[], UErrorCode& status);
|
| - ~DateFormatPerfTest();
|
| - virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,const char* &name, char* par);
|
| -
|
| - UPerfFunction* DateFmt250();
|
| - UPerfFunction* DateFmt10000();
|
| - UPerfFunction* DateFmt100000();
|
| - UPerfFunction* DateFmtCreate250();
|
| - UPerfFunction* DateFmtCreate10000();
|
| - UPerfFunction* DateFmtCopy250();
|
| - UPerfFunction* DateFmtCopy10000();
|
| - UPerfFunction* BreakItWord250();
|
| - UPerfFunction* BreakItWord10000();
|
| - UPerfFunction* BreakItChar250();
|
| - UPerfFunction* BreakItChar10000();
|
| - UPerfFunction* NumFmt10000();
|
| - UPerfFunction* NumFmt100000();
|
| - UPerfFunction* Collation10000();
|
| - UPerfFunction* Collation100000();
|
| - UPerfFunction* DIFCreate250();
|
| - UPerfFunction* DIFCreate10000();
|
| - UPerfFunction* TimeZoneCreate250();
|
| - UPerfFunction* TimeZoneCreate10000();
|
| - UPerfFunction* DTPatternGeneratorCreate250();
|
| - UPerfFunction* DTPatternGeneratorCreate10000();
|
| - UPerfFunction* DTPatternGeneratorCopy250();
|
| - UPerfFunction* DTPatternGeneratorCopy10000();
|
| - UPerfFunction* DTPatternGeneratorBestValue250();
|
| - UPerfFunction* DTPatternGeneratorBestValue10000();
|
| -};
|
| -
|
| -#endif // DateFmtPerf
|
|
|