| Index: source/test/perf/DateFmtPerf/DateFmtPerf.h
|
| diff --git a/source/test/perf/DateFmtPerf/DateFmtPerf.h b/source/test/perf/DateFmtPerf/DateFmtPerf.h
|
| index 7aeb316418d87f53d9b6bed46b693615c6402772..033405316002e82b341dea6d4500ffc74fa20130 100644
|
| --- a/source/test/perf/DateFmtPerf/DateFmtPerf.h
|
| +++ b/source/test/perf/DateFmtPerf/DateFmtPerf.h
|
| @@ -1,6 +1,6 @@
|
| /*
|
| **********************************************************************
|
| -* Copyright (c) 2002-2011,International Business Machines
|
| +* Copyright (c) 2002-2014,International Business Machines
|
| * Corporation and others. All Rights Reserved.
|
| **********************************************************************
|
| **********************************************************************
|
| @@ -14,6 +14,7 @@
|
| #include "unicode/unistr.h"
|
| #include "unicode/uperf.h"
|
|
|
| +#include "unicode/dtitvfmt.h"
|
| #include "unicode/utypes.h"
|
| #include "unicode/datefmt.h"
|
| #include "unicode/calendar.h"
|
| @@ -56,7 +57,7 @@ public:
|
| BreakItFunction(){num = -1;}
|
| BreakItFunction(int a, bool b){num = a; wordIteration = b;}
|
|
|
| - virtual void call(UErrorCode *status)
|
| + virtual void call(UErrorCode * status)
|
| {
|
| BreakIterator* boundary;
|
|
|
| @@ -231,6 +232,326 @@ public:
|
|
|
| };
|
|
|
| +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
|
| {
|
|
|
| @@ -497,6 +818,10 @@ public:
|
| UPerfFunction* DateFmt250();
|
| UPerfFunction* DateFmt10000();
|
| UPerfFunction* DateFmt100000();
|
| + UPerfFunction* DateFmtCreate250();
|
| + UPerfFunction* DateFmtCreate10000();
|
| + UPerfFunction* DateFmtCopy250();
|
| + UPerfFunction* DateFmtCopy10000();
|
| UPerfFunction* BreakItWord250();
|
| UPerfFunction* BreakItWord10000();
|
| UPerfFunction* BreakItChar250();
|
| @@ -505,6 +830,16 @@ public:
|
| 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
|
|
|