summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu/icu-4.4/test/perf/ustrperf/stringperf.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/icu/icu-4.4/test/perf/ustrperf/stringperf.h')
-rw-r--r--Build/source/libs/icu/icu-4.4/test/perf/ustrperf/stringperf.h549
1 files changed, 0 insertions, 549 deletions
diff --git a/Build/source/libs/icu/icu-4.4/test/perf/ustrperf/stringperf.h b/Build/source/libs/icu/icu-4.4/test/perf/ustrperf/stringperf.h
deleted file mode 100644
index 84d6493a405..00000000000
--- a/Build/source/libs/icu/icu-4.4/test/perf/ustrperf/stringperf.h
+++ /dev/null
@@ -1,549 +0,0 @@
-/*
-**********************************************************************
-* Copyright (c) 2002-2006, International Business Machines
-* Corporation and others. All Rights Reserved.
-**********************************************************************
-*/
-#ifndef _STRINGPERF_H
-#define _STRINGPERF_H
-
-#include <string>
-
-#include "unicode/utypes.h"
-#include "unicode/unistr.h"
-
-#include "unicode/uperf.h"
-
-typedef std::wstring stlstring;
-
-/* Define all constants for test case operations */
-#define MAXNUMLINES 40000 //Max number of lines in a test data file
-#define MAXSRCLEN 20 //Max length of one line. maybe a larger number, but it need more mem
-#define LOOPS 100 //Iterations
-//#define LOOPS 10
-#define catenate_STRLEN 2
-
-const UChar uTESTCHAR1 = 'a';
-const wchar_t wTESTCHAR1 = 'a';
-const UnicodeString uEMPTY;
-const stlstring sEMPTY;
-UnicodeString unistr;
-stlstring stlstr;
-// Simulate construction with a single-char string for basic_string
-wchar_t simulate[2]={wTESTCHAR1, 0};
-
-/* Constants for scan operation */
-U_STRING_DECL(scan_STRING, "Dot. 123. Some more data.", 25);
-const UnicodeString uScan_STRING=UnicodeString(scan_STRING);
-const stlstring sScan_STRING=stlstring(L"Dot. 123. Some more data.");
-
-/* global variables or constants for concatenation operation */
-U_STRING_DECL(uCatenate_STR, "!!", 2);
-const stlstring sCatenate_STR=stlstring(L"!!");
-static UnicodeString* catICU;
-static stlstring* catStd;
-UBool bCatenatePrealloc;
-
-/* type defines */
-typedef struct WLine WLine;
-struct WLine {
- wchar_t name[100];
- int32_t len;
-}; //struct to store one line of wchar_t string
-
-enum FnType { Fn_ICU, Fn_STD };
-typedef FnType FnType;
-typedef void (*ICUStringPerfFn)(const UChar* src,int32_t srcLen, UnicodeString s0);
-typedef void (*StdStringPerfFn)(const wchar_t* src,int32_t srcLen, stlstring s0);
-
-
-class StringPerfFunction : public UPerfFunction
-{
-public:
-
- virtual long getEventsPerIteration(){
- int loops = LOOPS;
- if (catICU) { delete catICU;}
- if (catStd) { delete catStd;}
-
- if (bCatenatePrealloc) {
-
- int to_alloc = loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN);
- catICU = new UnicodeString(to_alloc,'a',0);
- //catICU = new UnicodeString();
-
- catStd = new stlstring();
- //catStd -> reserve(loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN));
- catStd -> reserve(110000000);
- } else {
- catICU = new UnicodeString();
- catStd = new stlstring();
- }
-
- return -1;
- }
-
- virtual void call(UErrorCode* status)
- {
- if(line_mode_==TRUE){
- if(uselen_){
- for(int32_t i = 0; i< numLines_; i++){
- if (fnType_==Fn_ICU) {
- (*fn1_)(lines_[i].name,lines_[i].len,uS0_[i]);
- } else {
- (*fn2_)(wlines_[i].name,wlines_[i].len,sS0_[i]);
- }
- }
- }else{
- for(int32_t i = 0; i< numLines_; i++){
- if (fnType_==Fn_ICU) {
- (*fn1_)(lines_[i].name,-1,uS0_[i]);
- } else {
- (*fn2_)(wlines_[i].name,-1,sS0_[i]);
- }
- }
- }
- }else{
- if(uselen_){
- if (fnType_==Fn_ICU) {
- (*fn1_)(src_,srcLen_,*ubulk_);
- } else {
- (*fn2_)(wsrc_,wsrcLen_,*sbulk_);
- }
- }else{
- if (fnType_==Fn_ICU) {
- (*fn1_)(src_,-1,*ubulk_);
- } else {
- (*fn2_)(wsrc_,-1,*sbulk_);
- }
- }
- }
- }
-
- virtual long getOperationsPerIteration()
- {
- if(line_mode_==TRUE){
- return numLines_;
- }else{
- return 1;
- }
- }
-
- StringPerfFunction(ICUStringPerfFn func, ULine* srcLines, int32_t srcNumLines, UBool uselen)
- {
-
- fn1_ = func;
- lines_=srcLines;
- wlines_=NULL;
- numLines_=srcNumLines;
- uselen_=uselen;
- line_mode_=TRUE;
- src_ = NULL;
- srcLen_ = 0;
- wsrc_ = NULL;
- wsrcLen_ = 0;
- fnType_ = Fn_ICU;
-
- uS0_=new UnicodeString[numLines_];
- for(int32_t i=0; i<numLines_; i++) {
- uS0_[i]=UnicodeString(lines_[i].name, lines_[i].len);
- }
- sS0_=NULL;
- ubulk_=NULL;
- sbulk_=NULL;
- }
-
- StringPerfFunction(StdStringPerfFn func, ULine* srcLines, int32_t srcNumLines, UBool uselen)
- {
-
- fn2_ = func;
- lines_=srcLines;
- wlines_=NULL;
- numLines_=srcNumLines;
- uselen_=uselen;
- line_mode_=TRUE;
- src_ = NULL;
- srcLen_ = 0;
- wsrc_ = NULL;
- wsrcLen_ = 0;
- fnType_ = Fn_STD;
-
- uS0_=NULL;
- ubulk_=NULL;
- sbulk_=NULL;
-
- //fillin wlines_[], sS0_[]
- prepareLinesForStd();
- }
-
- StringPerfFunction(ICUStringPerfFn func, UChar* source, int32_t sourceLen, UBool uselen)
- {
-
- fn1_ = func;
- lines_=NULL;
- wlines_=NULL;
- numLines_=0;
- uselen_=uselen;
- line_mode_=FALSE;
- src_ = new UChar[sourceLen];
- memcpy(src_, source, sourceLen * U_SIZEOF_UCHAR);
- srcLen_ = sourceLen;
- wsrc_ = NULL;
- wsrcLen_ = 0;
- fnType_ = Fn_ICU;
-
- uS0_=NULL;
- sS0_=NULL;
- ubulk_=new UnicodeString(src_,srcLen_);
- sbulk_=NULL;
- }
-
- StringPerfFunction(StdStringPerfFn func, UChar* source, int32_t sourceLen, UBool uselen)
- {
-
- fn2_ = func;
- lines_=NULL;
- wlines_=NULL;
- numLines_=0;
- uselen_=uselen;
- line_mode_=FALSE;
- src_ = new UChar[sourceLen];
- memcpy(src_, source, sourceLen * U_SIZEOF_UCHAR);
- srcLen_ = sourceLen;
- fnType_ = Fn_STD;
-
- uS0_=NULL;
- sS0_=NULL;
- ubulk_=NULL;
-
- //fillin wsrc_, sbulk_
- prepareBulkForStd();
-
- }
-
- ~StringPerfFunction()
- {
- //free(src_);
- free(wsrc_);
- delete[] src_;
- delete ubulk_;
- delete sbulk_;
- delete[] uS0_;
- delete[] sS0_;
- delete[] wlines_;
- }
-
-private:
- void prepareLinesForStd(void)
- {
- UErrorCode err=U_ZERO_ERROR;
-
- wlines_=new WLine[numLines_];
- wchar_t ws[100];
- int32_t wcap = sizeof(ws) / sizeof(*ws);
- int32_t wl;
- wchar_t* wcs;
-
- sS0_=new stlstring[numLines_];
- for(int32_t i=0; i<numLines_; i++) {
- if(uselen_) {
- wcs = u_strToWCS(ws, wcap, &wl, lines_[i].name, lines_[i].len, &err);
- memcpy(wlines_[i].name, wcs, wl * sizeof(wchar_t));
- wlines_[i].len = wl;
- sS0_[i]=stlstring(wlines_[i].name, wlines_[i].len);
- } else {
- wcs = u_strToWCS(ws, wcap, &wl, lines_[i].name, lines_[i].len-1, &err);
- memcpy(wlines_[i].name, wcs, wl*sizeof(wchar_t));
- wlines_[i].len = wl;
- sS0_[i]=stlstring(wlines_[i].name, wlines_[i].len+1);
- }
-
- if (U_FAILURE(err)) {
- return;
- }
- }
-
- }
-
- void prepareBulkForStd(void)
- {
- UErrorCode err=U_ZERO_ERROR;
-
- const UChar* uSrc = src_;
- int32_t uSrcLen = srcLen_;
- wchar_t* wDest = NULL;
- int32_t wDestLen = 0;
- int32_t reqLen= 0 ;
-
- if(uselen_) {
- /* pre-flight*/
- u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen,&err);
-
- if(err == U_BUFFER_OVERFLOW_ERROR){
- err=U_ZERO_ERROR;
- wDest =(wchar_t*) malloc(sizeof(wchar_t) * (reqLen));
- wDestLen = reqLen;
- u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen,&err);
- }
-
- if (U_SUCCESS(err)) {
- wsrc_ = wDest;
- wsrcLen_ = wDestLen;
- sbulk_=new stlstring(wsrc_,wsrcLen_);
- }
-
- } else {
- /* pre-flight*/
- u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen-1,&err);
-
- if(err == U_BUFFER_OVERFLOW_ERROR){
- err=U_ZERO_ERROR;
- wDest =(wchar_t*) malloc(sizeof(wchar_t) * (reqLen+1));
- wDestLen = reqLen+1;
- u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen-1,&err);
- }
-
- if (U_SUCCESS(err)) {
- wsrc_ = wDest;
- wsrcLen_ = wDestLen;
- sbulk_=new stlstring(wsrc_);
- }
- }
-
- //free(wDest);
- }
-
-
-private:
- ICUStringPerfFn fn1_;
- StdStringPerfFn fn2_;
-
- ULine* lines_;
- WLine* wlines_;
- int32_t numLines_;
-
- UBool uselen_;
- UChar* src_;
- int32_t srcLen_;
- wchar_t* wsrc_;
- int32_t wsrcLen_;
- UBool line_mode_;
-
- //added for preparing testing data
- UnicodeString* uS0_;
- stlstring* sS0_;
- UnicodeString* ubulk_;
- stlstring* sbulk_;
- FnType fnType_;
-};
-
-
-class StringPerformanceTest : public UPerfTest
-{
-public:
- StringPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
- ~StringPerformanceTest();
- virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
- const char *&name,
- char *par = NULL);
- UPerfFunction* TestCtor();
- UPerfFunction* TestCtor1();
- UPerfFunction* TestCtor2();
- UPerfFunction* TestCtor3();
- UPerfFunction* TestAssign();
- UPerfFunction* TestAssign1();
- UPerfFunction* TestAssign2();
- UPerfFunction* TestGetch();
- UPerfFunction* TestCatenate();
- UPerfFunction* TestScan();
- UPerfFunction* TestScan1();
- UPerfFunction* TestScan2();
-
- UPerfFunction* TestStdLibCtor();
- UPerfFunction* TestStdLibCtor1();
- UPerfFunction* TestStdLibCtor2();
- UPerfFunction* TestStdLibCtor3();
- UPerfFunction* TestStdLibAssign();
- UPerfFunction* TestStdLibAssign1();
- UPerfFunction* TestStdLibAssign2();
- UPerfFunction* TestStdLibGetch();
- UPerfFunction* TestStdLibCatenate();
- UPerfFunction* TestStdLibScan();
- UPerfFunction* TestStdLibScan1();
- UPerfFunction* TestStdLibScan2();
-
-private:
- long COUNT_;
- ULine* filelines_;
- UChar* StrBuffer;
- int32_t StrBufferLen;
-
-};
-
-
-inline void ctor(const UChar* src,int32_t srcLen, UnicodeString s0)
-{
- UnicodeString a;
-}
-
-inline void ctor1(const UChar* src,int32_t srcLen, UnicodeString s0)
-{
- UnicodeString b(uTESTCHAR1);
-}
-
-inline void ctor2(const UChar* src,int32_t srcLen, UnicodeString s0)
-{
- UnicodeString c(uEMPTY);
-}
-
-inline void ctor3(const UChar* src,int32_t srcLen, UnicodeString s0)
-{
- UnicodeString d(src,srcLen);
-}
-
-inline UnicodeString icu_assign_helper(const UChar* src,int32_t srcLen)
-{
- if (srcLen==-1) { return src;}
- else { return UnicodeString(src, srcLen);}
-}
-
-inline void assign(const UChar* src,int32_t srcLen, UnicodeString s0)
-{
- unistr = icu_assign_helper(src,srcLen);
-}
-
-inline void assign1(const UChar* src,int32_t srcLen, UnicodeString s0)
-{
- unistr.setTo(src, srcLen);
-}
-
-inline void assign2(const UChar* src,int32_t srcLen, UnicodeString s0)
-{
- unistr = s0;
-}
-
-inline void getch(const UChar* src,int32_t srcLen, UnicodeString s0)
-{
- s0.charAt(0);
-}
-
-
-inline void catenate(const UChar* src,int32_t srcLen, UnicodeString s0)
-{
- UTimer mystart, mystop;
- utimer_getTime(&mystart);
-
- *catICU += s0;
-
- utimer_getTime(&mystop);
- double mytime = utimer_getDeltaSeconds(&mystart,&mystop);
- printf("\nmytime=%f \n", mytime);
-
- *catICU += uCatenate_STR;
-}
-
-volatile int scan_idx;
-U_STRING_DECL(SCAN1, "123", 3);
-
-inline void scan(const UChar* src,int32_t srcLen, UnicodeString s0)
-{
- UChar c='.';
- scan_idx = uScan_STRING.indexOf(c);
-}
-
-inline void scan1(const UChar* src,int32_t srcLen, UnicodeString s0)
-{
- scan_idx = uScan_STRING.indexOf(SCAN1,3);
-}
-
-inline void scan2(const UChar* src,int32_t srcLen, UnicodeString s0)
-{
- UChar c1='s';
- UChar c2='m';
- scan_idx = uScan_STRING.indexOf(c1);
- scan_idx = uScan_STRING.indexOf(c2);
-}
-
-
-inline void StdLibCtor(const wchar_t* src,int32_t srcLen, stlstring s0)
-{
- stlstring a;
-}
-
-inline void StdLibCtor1(const wchar_t* src,int32_t srcLen, stlstring s0)
-{
- stlstring b(simulate);
-}
-
-inline void StdLibCtor2(const wchar_t* src,int32_t srcLen, stlstring s0)
-{
- stlstring c(sEMPTY);
-}
-
-inline void StdLibCtor3(const wchar_t* src,int32_t srcLen, stlstring s0)
-{
- if (srcLen==-1) {
- stlstring d(src);
- }else {
- stlstring d(src, srcLen);
- }
-}
-
-inline stlstring stl_assign_helper(const wchar_t* src,int32_t srcLen)
-{
- if (srcLen==-1) { return src;}
- else { return stlstring(src, srcLen);}
-}
-
-inline void StdLibAssign(const wchar_t* src,int32_t srcLen, stlstring s0)
-{
- stlstr = stl_assign_helper(src,srcLen);
-}
-
-inline void StdLibAssign1(const wchar_t* src,int32_t srcLen, stlstring s0)
-{
- if (srcLen==-1) { stlstr=src;}
- else { stlstr.assign(src, srcLen);}
-}
-
-inline void StdLibAssign2(const wchar_t* src,int32_t srcLen, stlstring s0)
-{
- stlstr=s0;
-}
-
-inline void StdLibGetch(const wchar_t* src,int32_t srcLen, stlstring s0)
-{
- s0.at(0);
-}
-
-inline void StdLibCatenate(const wchar_t* src,int32_t srcLen, stlstring s0)
-{
- UTimer mystart, mystop;
- utimer_getTime(&mystart);
-
- *catStd += s0;
- *catStd += sCatenate_STR;
-
- utimer_getTime(&mystop);
- double mytime = utimer_getDeltaSeconds(&mystart,&mystop);
- printf("\nmytime=%f \n", mytime);
-
-}
-
-inline void StdLibScan(const wchar_t* src,int32_t srcLen, stlstring s0)
-{
- scan_idx = (int) sScan_STRING.find('.');
-}
-
-inline void StdLibScan1(const wchar_t* src,int32_t srcLen, stlstring s0)
-{
- scan_idx = (int) sScan_STRING.find(L"123");
-}
-
-inline void StdLibScan2(const wchar_t* src,int32_t srcLen, stlstring s0)
-{
- scan_idx = (int) sScan_STRING.find_first_of(L"sm");
-}
-
-#endif // STRINGPERF_H
-