| 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
 | 
| 
 |