diff options
Diffstat (limited to 'Build/source/libs/icu-xetex/test/perf/ustrperf')
5 files changed, 616 insertions, 531 deletions
diff --git a/Build/source/libs/icu-xetex/test/perf/ustrperf/.cvsignore b/Build/source/libs/icu-xetex/test/perf/ustrperf/.cvsignore new file mode 100644 index 00000000000..4c913730998 --- /dev/null +++ b/Build/source/libs/icu-xetex/test/perf/ustrperf/.cvsignore @@ -0,0 +1,6 @@ +*.d +*.o +charperf +Debug +Release +Makefile diff --git a/Build/source/libs/icu-xetex/test/perf/ustrperf/Makefile.in b/Build/source/libs/icu-xetex/test/perf/ustrperf/Makefile.in new file mode 100644 index 00000000000..6432ae793de --- /dev/null +++ b/Build/source/libs/icu-xetex/test/perf/ustrperf/Makefile.in @@ -0,0 +1,78 @@ +## Makefile.in for ICU - test/perf/ustrperf +## Copyright (c) 2001-2006, International Business Machines Corporation and +## others. All Rights Reserved. + +## Source directory information +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ + +top_builddir = ../../.. + +include $(top_builddir)/icudefs.mk + +## Build directory information +subdir = test/perf/ustrperf + +## Extra files to remove for 'make clean' +CLEANFILES = *~ $(DEPS) + +## Target information +TARGET = ustrperf + +CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw +LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M) + +OBJECTS = stringperf.o + +DEPS = $(OBJECTS:.o=.d) + +## List of phony targets +.PHONY : all all-local install install-local clean clean-local \ +distclean distclean-local dist dist-local check check-local + +## Clear suffix list +.SUFFIXES : + +## List of standard targets +all: all-local +install: install-local +clean: clean-local +distclean : distclean-local +dist: dist-local +check: all check-local + +all-local: $(TARGET) + +install-local: + +dist-local: + +clean-local: + test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES) + $(RMV) $(OBJECTS) $(TARGET) + +distclean-local: clean-local + $(RMV) Makefile + +check-local: all-local + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(TARGET) : $(OBJECTS) + $(LINK.cc) -o $@ $^ $(LIBS) + +invoke: + ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION) + +ifeq (,$(MAKECMDGOALS)) +-include $(DEPS) +else +ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),) +ifneq ($(patsubst %install,,$(MAKECMDGOALS)),) +-include $(DEPS) +endif +endif +endif + diff --git a/Build/source/libs/icu-xetex/test/perf/ustrperf/stringperf.cpp b/Build/source/libs/icu-xetex/test/perf/ustrperf/stringperf.cpp index 653e1a0297b..342e060aa8c 100644 --- a/Build/source/libs/icu-xetex/test/perf/ustrperf/stringperf.cpp +++ b/Build/source/libs/icu-xetex/test/perf/ustrperf/stringperf.cpp @@ -1,6 +1,6 @@ /******************************************************************** * COPYRIGHT: - * Copyright (C) 2002-2004 International Business Machines Corporation + * Copyright (C) 2002-2006 International Business Machines Corporation * and others. All Rights Reserved. * ********************************************************************/ @@ -9,7 +9,7 @@ * * Modification History: * Name Description -* Doug Wang Second version +* Doug Wang Second version * Doug Wang First Version ****************************************************************************** */ @@ -28,55 +28,55 @@ int main(int argc, const char *argv[]) { UErrorCode status = U_ZERO_ERROR; - bCatenatePrealloc=TRUE; + bCatenatePrealloc=TRUE; StringPerformanceTest test(argc, argv, status); - if (U_FAILURE(status)){ + if (U_FAILURE(status)){ return status; } - - int loops = LOOPS; - 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(); - } + + int loops = LOOPS; + 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(); + } if (test.run() == FALSE){ fprintf(stderr, "FAILED: Tests could not be run please check the " - "arguments.\n"); + "arguments.\n"); return -1; } - delete catICU; - delete catStd; + delete catICU; + delete catStd; return 0; } StringPerformanceTest::StringPerformanceTest(int32_t argc, const char *argv[], - UErrorCode &status) - : UPerfTest(argc, argv, status) + UErrorCode &status) + : UPerfTest(argc, argv, status) { - filelines_=NULL; - StrBuffer=NULL; - StrBufferLen=0; + filelines_=NULL; + StrBuffer=NULL; + StrBufferLen=0; - int32_t len =0; + int32_t len =0; - if (status== U_ILLEGAL_ARGUMENT_ERROR){ - //fprintf(stderr,gUsageString, "stringperf"); - return; + if (status== U_ILLEGAL_ARGUMENT_ERROR){ + //fprintf(stderr,gUsageString, "stringperf"); + return; } if (U_FAILURE(status)){ fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n", - u_errorName(status)); + u_errorName(status)); return; } @@ -87,15 +87,15 @@ StringPerformanceTest::StringPerformanceTest(int32_t argc, const char *argv[], fprintf(stderr, "FAILED to read lines from file and create UPerfTest object. Error: %s\n", u_errorName(status)); return; } - - filelines_ = new ULine[numLines]; - for (int i =0; i < numLines; i++) { - len = filelines[i].len; - filelines_[i].name = new UChar[len]; + + filelines_ = new ULine[numLines]; + for (int i =0; i < numLines; i++) { + len = filelines[i].len; + filelines_[i].name = new UChar[len]; filelines_[i].len = len; - memcpy(filelines_[i].name, filelines[i].name, len * U_SIZEOF_UCHAR); - } - + memcpy(filelines_[i].name, filelines[i].name, len * U_SIZEOF_UCHAR); + } + }else if(bulk_mode){ int32_t srcLen = 0; const UChar* src = getBuffer(srcLen,status); @@ -103,50 +103,50 @@ StringPerformanceTest::StringPerformanceTest(int32_t argc, const char *argv[], fprintf(stderr, "FAILED to read buffer from file and create UPerfTest object. Error: %s\n", u_errorName(status)); return; } - - StrBuffer = new UChar[srcLen]; - StrBufferLen = srcLen; - memcpy(StrBuffer, src, srcLen * U_SIZEOF_UCHAR); + + StrBuffer = new UChar[srcLen]; + StrBufferLen = srcLen; + memcpy(StrBuffer, src, srcLen * U_SIZEOF_UCHAR); } } StringPerformanceTest::~StringPerformanceTest() { - delete[] filelines_; - delete[] StrBuffer; + delete[] filelines_; + delete[] StrBuffer; } UPerfFunction* StringPerformanceTest::runIndexedTest(int32_t index, UBool exec, - const char *&name, - char* par) + const char *&name, + char* par) { switch (index) { TESTCASE(0, TestCtor); - TESTCASE(1, TestCtor1); - TESTCASE(2, TestCtor2); - TESTCASE(3, TestCtor3); - TESTCASE(4, TestAssign); - TESTCASE(5, TestAssign1); - TESTCASE(6, TestAssign2); - TESTCASE(7, TestGetch); - TESTCASE(8, TestCatenate); - TESTCASE(9, TestScan); - TESTCASE(10, TestScan1); - TESTCASE(11, TestScan2); - - TESTCASE(12, TestStdLibCtor); - TESTCASE(13, TestStdLibCtor1); - TESTCASE(14, TestStdLibCtor2); - TESTCASE(15, TestStdLibCtor3); - TESTCASE(16, TestStdLibAssign); - TESTCASE(17, TestStdLibAssign1); - TESTCASE(18, TestStdLibAssign2); - TESTCASE(19, TestStdLibGetch); - TESTCASE(20, TestStdLibCatenate); - TESTCASE(21, TestStdLibScan); - TESTCASE(22, TestStdLibScan1); - TESTCASE(23, TestStdLibScan2); + TESTCASE(1, TestCtor1); + TESTCASE(2, TestCtor2); + TESTCASE(3, TestCtor3); + TESTCASE(4, TestAssign); + TESTCASE(5, TestAssign1); + TESTCASE(6, TestAssign2); + TESTCASE(7, TestGetch); + TESTCASE(8, TestCatenate); + TESTCASE(9, TestScan); + TESTCASE(10, TestScan1); + TESTCASE(11, TestScan2); + + TESTCASE(12, TestStdLibCtor); + TESTCASE(13, TestStdLibCtor1); + TESTCASE(14, TestStdLibCtor2); + TESTCASE(15, TestStdLibCtor3); + TESTCASE(16, TestStdLibAssign); + TESTCASE(17, TestStdLibAssign1); + TESTCASE(18, TestStdLibAssign2); + TESTCASE(19, TestStdLibGetch); + TESTCASE(20, TestStdLibCatenate); + TESTCASE(21, TestStdLibScan); + TESTCASE(22, TestStdLibScan1); + TESTCASE(23, TestStdLibScan2); default: name = ""; @@ -157,219 +157,221 @@ UPerfFunction* StringPerformanceTest::runIndexedTest(int32_t index, UBool exec, UPerfFunction* StringPerformanceTest::TestCtor() { - if (line_mode) { - return new StringPerfFunction(ctor, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(ctor, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(ctor, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(ctor, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestCtor1() { - if (line_mode) { - return new StringPerfFunction(ctor1, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(ctor1, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(ctor1, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(ctor1, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestCtor2() { - if (line_mode) { - return new StringPerfFunction(ctor2, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(ctor2, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(ctor2, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(ctor2, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestCtor3() { - if (line_mode) { - return new StringPerfFunction(ctor3, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(ctor3, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(ctor3, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(ctor3, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestAssign() { - if (line_mode) { - return new StringPerfFunction(assign, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(assign, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(assign, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(assign, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestAssign1() { - if (line_mode) { - return new StringPerfFunction(assign1, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(assign1, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(assign1, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(assign1, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestAssign2() { - if (line_mode) { - return new StringPerfFunction(assign2, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(assign2, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(assign2, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(assign2, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestGetch() { - if (line_mode) { - return new StringPerfFunction(getch, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(getch, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(getch, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(getch, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestCatenate() { - if (line_mode) { - return new StringPerfFunction(catenate, filelines_, numLines, uselen); - } else { - //return new StringPerfFunction(catenate, buffer, bufferLen, uselen); - return new StringPerfFunction(catenate, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(catenate, filelines_, numLines, uselen); + } else { + //return new StringPerfFunction(catenate, buffer, bufferLen, uselen); + return new StringPerfFunction(catenate, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestScan() { - if (line_mode) { - return new StringPerfFunction(scan, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(scan, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(scan, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(scan, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestScan1() { - if (line_mode) { - return new StringPerfFunction(scan1, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(scan1, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(scan1, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(scan1, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestScan2() { - if (line_mode) { - return new StringPerfFunction(scan2, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(scan2, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(scan2, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(scan2, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestStdLibCtor() { - if (line_mode) { - return new StringPerfFunction(StdLibCtor, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(StdLibCtor, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(StdLibCtor, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(StdLibCtor, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestStdLibCtor1() { - if (line_mode) { - return new StringPerfFunction(StdLibCtor1, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(StdLibCtor1, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(StdLibCtor1, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(StdLibCtor1, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestStdLibCtor2() { - if (line_mode) { - return new StringPerfFunction(StdLibCtor2, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(StdLibCtor2, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(StdLibCtor2, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(StdLibCtor2, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestStdLibCtor3() { - if (line_mode) { - return new StringPerfFunction(StdLibCtor3, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(StdLibCtor3, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(StdLibCtor3, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(StdLibCtor3, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestStdLibAssign() { - if (line_mode) { - return new StringPerfFunction(StdLibAssign, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(StdLibAssign, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(StdLibAssign, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(StdLibAssign, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestStdLibAssign1() { - if (line_mode) { - return new StringPerfFunction(StdLibAssign1, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(StdLibAssign1, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(StdLibAssign1, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(StdLibAssign1, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestStdLibAssign2() { - if (line_mode) { - return new StringPerfFunction(StdLibAssign2, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(StdLibAssign2, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(StdLibAssign2, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(StdLibAssign2, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestStdLibGetch() { - if (line_mode) { - return new StringPerfFunction(StdLibGetch, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(StdLibGetch, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(StdLibGetch, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(StdLibGetch, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestStdLibCatenate() { - if (line_mode) { - return new StringPerfFunction(StdLibCatenate, filelines_, numLines, uselen); - } else { - //return new StringPerfFunction(StdLibCatenate, buffer, bufferLen, uselen); - return new StringPerfFunction(StdLibCatenate, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(StdLibCatenate, filelines_, numLines, uselen); + } else { + //return new StringPerfFunction(StdLibCatenate, buffer, bufferLen, uselen); + return new StringPerfFunction(StdLibCatenate, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestStdLibScan() { - if (line_mode) { - return new StringPerfFunction(StdLibScan, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(StdLibScan, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(StdLibScan, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(StdLibScan, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestStdLibScan1() { - if (line_mode) { - return new StringPerfFunction(StdLibScan1, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(StdLibScan1, StrBuffer, StrBufferLen, uselen); - } + if (line_mode) { + return new StringPerfFunction(StdLibScan1, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(StdLibScan1, StrBuffer, StrBufferLen, uselen); + } } UPerfFunction* StringPerformanceTest::TestStdLibScan2() { - if (line_mode) { - return new StringPerfFunction(StdLibScan2, filelines_, numLines, uselen); - } else { - return new StringPerfFunction(StdLibScan2, StrBuffer, StrBufferLen, uselen); - } -}
\ No newline at end of file + if (line_mode) { + return new StringPerfFunction(StdLibScan2, filelines_, numLines, uselen); + } else { + return new StringPerfFunction(StdLibScan2, StrBuffer, StrBufferLen, uselen); + } +} + + diff --git a/Build/source/libs/icu-xetex/test/perf/ustrperf/stringperf.h b/Build/source/libs/icu-xetex/test/perf/ustrperf/stringperf.h index 5b6b47ba99a..84d6493a405 100644 --- a/Build/source/libs/icu-xetex/test/perf/ustrperf/stringperf.h +++ b/Build/source/libs/icu-xetex/test/perf/ustrperf/stringperf.h @@ -1,9 +1,8 @@ /* ********************************************************************** -* Copyright (c) 2002-2005, International Business Machines +* Copyright (c) 2002-2006, International Business Machines * Corporation and others. All Rights Reserved. ********************************************************************** -********************************************************************** */ #ifndef _STRINGPERF_H #define _STRINGPERF_H @@ -20,7 +19,7 @@ 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 100 //Iterations //#define LOOPS 10 #define catenate_STRLEN 2 @@ -62,385 +61,385 @@ 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 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) - { + 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]); - } + 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]); - } + (*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_); - } + 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_); - } + if (fnType_==Fn_ICU) { + (*fn1_)(src_,-1,*ubulk_); + } else { + (*fn2_)(wsrc_,-1,*sbulk_); + } } } - } + } - virtual long getOperationsPerIteration() - { + 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; + } + + 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; + 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); + 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); + 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_; - } + 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_]; + 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); - } + 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_; + 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_; -}; + + //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(); + 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; + long COUNT_; + ULine* filelines_; + UChar* StrBuffer; + int32_t StrBufferLen; }; -inline void ctor(const UChar* src,int32_t srcLen, UnicodeString s0) +inline void ctor(const UChar* src,int32_t srcLen, UnicodeString s0) { - UnicodeString a; + UnicodeString a; } -inline void ctor1(const UChar* src,int32_t srcLen, UnicodeString s0) +inline void ctor1(const UChar* src,int32_t srcLen, UnicodeString s0) { - UnicodeString b(uTESTCHAR1); + UnicodeString b(uTESTCHAR1); } -inline void ctor2(const UChar* src,int32_t srcLen, UnicodeString s0) +inline void ctor2(const UChar* src,int32_t srcLen, UnicodeString s0) { - UnicodeString c(uEMPTY); + UnicodeString c(uEMPTY); } -inline void ctor3(const UChar* src,int32_t srcLen, UnicodeString s0) +inline void ctor3(const UChar* src,int32_t srcLen, UnicodeString s0) { - UnicodeString d(src,srcLen); + 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);} + if (srcLen==-1) { return src;} + else { return UnicodeString(src, srcLen);} } -inline void assign(const UChar* src,int32_t srcLen, UnicodeString s0) +inline void assign(const UChar* src,int32_t srcLen, UnicodeString s0) { - unistr = icu_assign_helper(src,srcLen); + unistr = icu_assign_helper(src,srcLen); } -inline void assign1(const UChar* src,int32_t srcLen, UnicodeString s0) +inline void assign1(const UChar* src,int32_t srcLen, UnicodeString s0) { - unistr.setTo(src, srcLen); + unistr.setTo(src, srcLen); } -inline void assign2(const UChar* src,int32_t srcLen, UnicodeString s0) +inline void assign2(const UChar* src,int32_t srcLen, UnicodeString s0) { - unistr = s0; + unistr = s0; } inline void getch(const UChar* src,int32_t srcLen, UnicodeString s0) { - s0.charAt(0); + 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); + UTimer mystart, mystop; + utimer_getTime(&mystart); + + *catICU += s0; + + utimer_getTime(&mystop); double mytime = utimer_getDeltaSeconds(&mystart,&mystop); - printf("\nmytime=%f \n", mytime); + printf("\nmytime=%f \n", mytime); - *catICU += uCatenate_STR; + *catICU += uCatenate_STR; } volatile int scan_idx; @@ -448,103 +447,103 @@ 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); + 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); + 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); + 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; + stlstring a; } inline void StdLibCtor1(const wchar_t* src,int32_t srcLen, stlstring s0) { - - stlstring b(simulate); + stlstring b(simulate); } inline void StdLibCtor2(const wchar_t* src,int32_t srcLen, stlstring s0) { - stlstring c(sEMPTY); + 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); - } + 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);} + if (srcLen==-1) { return src;} + else { return stlstring(src, srcLen);} } -inline void StdLibAssign(const wchar_t* src,int32_t srcLen, stlstring s0) +inline void StdLibAssign(const wchar_t* src,int32_t srcLen, stlstring s0) { - stlstr = stl_assign_helper(src,srcLen); + stlstr = stl_assign_helper(src,srcLen); } -inline void StdLibAssign1(const wchar_t* src,int32_t srcLen, stlstring s0) +inline void StdLibAssign1(const wchar_t* src,int32_t srcLen, stlstring s0) { - if (srcLen==-1) { stlstr=src;} - else { stlstr.assign(src, srcLen);} + if (srcLen==-1) { stlstr=src;} + else { stlstr.assign(src, srcLen);} } -inline void StdLibAssign2(const wchar_t* src,int32_t srcLen, stlstring s0) +inline void StdLibAssign2(const wchar_t* src,int32_t srcLen, stlstring s0) { - stlstr=s0; + stlstr=s0; } inline void StdLibGetch(const wchar_t* src,int32_t srcLen, stlstring s0) { - s0.at(0); + s0.at(0); } inline void StdLibCatenate(const wchar_t* src,int32_t srcLen, stlstring s0) { - UTimer mystart, mystop; - utimer_getTime(&mystart); + UTimer mystart, mystop; + utimer_getTime(&mystart); *catStd += s0; - *catStd += sCatenate_STR; + *catStd += sCatenate_STR; - utimer_getTime(&mystop); + utimer_getTime(&mystop); double mytime = utimer_getDeltaSeconds(&mystart,&mystop); - printf("\nmytime=%f \n", mytime); - + printf("\nmytime=%f \n", mytime); + } inline void StdLibScan(const wchar_t* src,int32_t srcLen, stlstring s0) { - scan_idx = (int) sScan_STRING.find('.'); + 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"); + 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"); + scan_idx = (int) sScan_STRING.find_first_of(L"sm"); } -#endif // STRINGPERF_H
\ No newline at end of file +#endif // STRINGPERF_H + diff --git a/Build/source/libs/icu-xetex/test/perf/ustrperf/stringperf.vcproj b/Build/source/libs/icu-xetex/test/perf/ustrperf/stringperf.vcproj index 2e11d087da8..340d1047c84 100644 --- a/Build/source/libs/icu-xetex/test/perf/ustrperf/stringperf.vcproj +++ b/Build/source/libs/icu-xetex/test/perf/ustrperf/stringperf.vcproj @@ -102,7 +102,7 @@ Name="VCCustomBuildTool"/> <Tool Name="VCLinkerTool" - AdditionalDependencies="icuuc.lib icutu.lib icutest.lib winmm.lib" + AdditionalDependencies="icuucd.lib icutud.lib icutestd.lib winmm.lib" OutputFile=".\Debug/stringperf.exe" LinkIncremental="1" SuppressStartupBanner="TRUE" |