Index: icu46/source/test/perf/ustrperf/stringperf.cpp |
=================================================================== |
--- icu46/source/test/perf/ustrperf/stringperf.cpp (revision 0) |
+++ icu46/source/test/perf/ustrperf/stringperf.cpp (revision 0) |
@@ -0,0 +1,377 @@ |
+/******************************************************************** |
+ * COPYRIGHT: |
+ * Copyright (C) 2002-2006 International Business Machines Corporation |
+ * and others. All Rights Reserved. |
+ * |
+ ********************************************************************/ |
+/***************************************************************************** |
+* File stringperf.cpp |
+* |
+* Modification History: |
+* Name Description |
+* Doug Wang Second version |
+* Doug Wang First Version |
+****************************************************************************** |
+*/ |
+ |
+/** |
+ * This program tests UnicodeString performance. |
+ * APIs tested: UnicodeString |
+ * ICU4C |
+ * Windows 2000/XP, Linux |
+ */ |
+ |
+#include "stringperf.h" |
+ |
+ |
+int main(int argc, const char *argv[]) |
+{ |
+ UErrorCode status = U_ZERO_ERROR; |
+ |
+ bCatenatePrealloc=TRUE; |
+ |
+ StringPerformanceTest test(argc, argv, 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(); |
+ } |
+ |
+ if (test.run() == FALSE){ |
+ fprintf(stderr, "FAILED: Tests could not be run please check the " |
+ "arguments.\n"); |
+ return -1; |
+ } |
+ |
+ delete catICU; |
+ delete catStd; |
+ return 0; |
+} |
+ |
+StringPerformanceTest::StringPerformanceTest(int32_t argc, const char *argv[], |
+ UErrorCode &status) |
+ : UPerfTest(argc, argv, status) |
+{ |
+ filelines_=NULL; |
+ StrBuffer=NULL; |
+ StrBufferLen=0; |
+ |
+ int32_t len =0; |
+ |
+ 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)); |
+ return; |
+ } |
+ |
+ |
+ if(line_mode){ |
+ ULine* filelines = getLines(status); |
+ if(U_FAILURE(status)){ |
+ 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_[i].len = len; |
+ 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); |
+ if(U_FAILURE(status)){ |
+ 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); |
+ |
+ } |
+} |
+ |
+StringPerformanceTest::~StringPerformanceTest() |
+{ |
+ delete[] filelines_; |
+ delete[] StrBuffer; |
+} |
+ |
+UPerfFunction* StringPerformanceTest::runIndexedTest(int32_t index, UBool exec, |
+ 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); |
+ |
+ default: |
+ name = ""; |
+ return NULL; |
+ } |
+ return NULL; |
+} |
+ |
+UPerfFunction* StringPerformanceTest::TestCtor() |
+{ |
+ 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); |
+ } |
+} |
+ |
+UPerfFunction* StringPerformanceTest::TestCtor2() |
+{ |
+ 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); |
+ } |
+} |
+ |
+UPerfFunction* StringPerformanceTest::TestAssign() |
+{ |
+ 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); |
+ } |
+} |
+ |
+UPerfFunction* StringPerformanceTest::TestAssign2() |
+{ |
+ 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); |
+ } |
+} |
+ |
+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); |
+ } |
+} |
+ |
+UPerfFunction* StringPerformanceTest::TestScan() |
+{ |
+ 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); |
+ } |
+} |
+ |
+UPerfFunction* StringPerformanceTest::TestScan2() |
+{ |
+ 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); |
+ } |
+} |
+ |
+UPerfFunction* StringPerformanceTest::TestStdLibCtor1() |
+{ |
+ 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); |
+ } |
+} |
+ |
+UPerfFunction* StringPerformanceTest::TestStdLibCtor3() |
+{ |
+ 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); |
+ } |
+} |
+ |
+UPerfFunction* StringPerformanceTest::TestStdLibAssign1() |
+{ |
+ 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); |
+ } |
+} |
+ |
+UPerfFunction* StringPerformanceTest::TestStdLibGetch() |
+{ |
+ 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); |
+ } |
+} |
+ |
+UPerfFunction* StringPerformanceTest::TestStdLibScan() |
+{ |
+ 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); |
+ } |
+} |
+ |
+UPerfFunction* StringPerformanceTest::TestStdLibScan2() |
+{ |
+ if (line_mode) { |
+ return new StringPerfFunction(StdLibScan2, filelines_, numLines, uselen); |
+ } else { |
+ return new StringPerfFunction(StdLibScan2, StrBuffer, StrBufferLen, uselen); |
+ } |
+} |
+ |
+ |
Property changes on: icu46/source/test/perf/ustrperf/stringperf.cpp |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |