12e5b6d6dSopenharmony_ci/*********************************************************************** 22e5b6d6dSopenharmony_ci * © 2016 and later: Unicode, Inc. and others. 32e5b6d6dSopenharmony_ci * License & terms of use: http://www.unicode.org/copyright.html 42e5b6d6dSopenharmony_ci * 52e5b6d6dSopenharmony_ci *********************************************************************** 62e5b6d6dSopenharmony_ci *********************************************************************** 72e5b6d6dSopenharmony_ci * COPYRIGHT: 82e5b6d6dSopenharmony_ci * Copyright (C) 2002-2006 International Business Machines Corporation 92e5b6d6dSopenharmony_ci * and others. All Rights Reserved. 102e5b6d6dSopenharmony_ci * 112e5b6d6dSopenharmony_ci ***********************************************************************/ 122e5b6d6dSopenharmony_ci/***************************************************************************** 132e5b6d6dSopenharmony_ci* File stringperf.cpp 142e5b6d6dSopenharmony_ci* 152e5b6d6dSopenharmony_ci* Modification History: 162e5b6d6dSopenharmony_ci* Name Description 172e5b6d6dSopenharmony_ci* Doug Wang Second version 182e5b6d6dSopenharmony_ci* Doug Wang First Version 192e5b6d6dSopenharmony_ci****************************************************************************** 202e5b6d6dSopenharmony_ci*/ 212e5b6d6dSopenharmony_ci 222e5b6d6dSopenharmony_ci/** 232e5b6d6dSopenharmony_ci * This program tests UnicodeString performance. 242e5b6d6dSopenharmony_ci * APIs tested: UnicodeString 252e5b6d6dSopenharmony_ci * ICU4C 262e5b6d6dSopenharmony_ci * Windows 2000/XP, Linux 272e5b6d6dSopenharmony_ci */ 282e5b6d6dSopenharmony_ci 292e5b6d6dSopenharmony_ci#include "stringperf.h" 302e5b6d6dSopenharmony_ci 312e5b6d6dSopenharmony_ci 322e5b6d6dSopenharmony_ciint main(int argc, const char *argv[]) 332e5b6d6dSopenharmony_ci{ 342e5b6d6dSopenharmony_ci UErrorCode status = U_ZERO_ERROR; 352e5b6d6dSopenharmony_ci 362e5b6d6dSopenharmony_ci bCatenatePrealloc=true; 372e5b6d6dSopenharmony_ci 382e5b6d6dSopenharmony_ci StringPerformanceTest test(argc, argv, status); 392e5b6d6dSopenharmony_ci if (U_FAILURE(status)){ 402e5b6d6dSopenharmony_ci return status; 412e5b6d6dSopenharmony_ci } 422e5b6d6dSopenharmony_ci 432e5b6d6dSopenharmony_ci int loops = LOOPS; 442e5b6d6dSopenharmony_ci if (bCatenatePrealloc) { 452e5b6d6dSopenharmony_ci int to_alloc = loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN); 462e5b6d6dSopenharmony_ci catICU = new UnicodeString(to_alloc,'a',0); 472e5b6d6dSopenharmony_ci //catICU = new UnicodeString(); 482e5b6d6dSopenharmony_ci 492e5b6d6dSopenharmony_ci catStd = new stlstring(); 502e5b6d6dSopenharmony_ci catStd -> reserve(loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN)); 512e5b6d6dSopenharmony_ci //catStd -> reserve(110000000); 522e5b6d6dSopenharmony_ci } else { 532e5b6d6dSopenharmony_ci catICU = new UnicodeString(); 542e5b6d6dSopenharmony_ci catStd = new stlstring(); 552e5b6d6dSopenharmony_ci } 562e5b6d6dSopenharmony_ci 572e5b6d6dSopenharmony_ci if (test.run() == false){ 582e5b6d6dSopenharmony_ci fprintf(stderr, "FAILED: Tests could not be run please check the " 592e5b6d6dSopenharmony_ci "arguments.\n"); 602e5b6d6dSopenharmony_ci return -1; 612e5b6d6dSopenharmony_ci } 622e5b6d6dSopenharmony_ci 632e5b6d6dSopenharmony_ci delete catICU; 642e5b6d6dSopenharmony_ci delete catStd; 652e5b6d6dSopenharmony_ci return 0; 662e5b6d6dSopenharmony_ci} 672e5b6d6dSopenharmony_ci 682e5b6d6dSopenharmony_ciStringPerformanceTest::StringPerformanceTest(int32_t argc, const char *argv[], 692e5b6d6dSopenharmony_ci UErrorCode &status) 702e5b6d6dSopenharmony_ci : UPerfTest(argc, argv, status) 712e5b6d6dSopenharmony_ci{ 722e5b6d6dSopenharmony_ci filelines_=NULL; 732e5b6d6dSopenharmony_ci StrBuffer=NULL; 742e5b6d6dSopenharmony_ci StrBufferLen=0; 752e5b6d6dSopenharmony_ci 762e5b6d6dSopenharmony_ci int32_t len =0; 772e5b6d6dSopenharmony_ci 782e5b6d6dSopenharmony_ci if (status== U_ILLEGAL_ARGUMENT_ERROR){ 792e5b6d6dSopenharmony_ci //fprintf(stderr,gUsageString, "stringperf"); 802e5b6d6dSopenharmony_ci return; 812e5b6d6dSopenharmony_ci } 822e5b6d6dSopenharmony_ci if (U_FAILURE(status)){ 832e5b6d6dSopenharmony_ci fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n", 842e5b6d6dSopenharmony_ci u_errorName(status)); 852e5b6d6dSopenharmony_ci return; 862e5b6d6dSopenharmony_ci } 872e5b6d6dSopenharmony_ci 882e5b6d6dSopenharmony_ci 892e5b6d6dSopenharmony_ci if(line_mode){ 902e5b6d6dSopenharmony_ci ULine* filelines = getLines(status); 912e5b6d6dSopenharmony_ci if(U_FAILURE(status)){ 922e5b6d6dSopenharmony_ci fprintf(stderr, "FAILED to read lines from file and create UPerfTest object. Error: %s\n", u_errorName(status)); 932e5b6d6dSopenharmony_ci return; 942e5b6d6dSopenharmony_ci } 952e5b6d6dSopenharmony_ci 962e5b6d6dSopenharmony_ci filelines_ = new ULine[numLines]; 972e5b6d6dSopenharmony_ci for (int i =0; i < numLines; i++) { 982e5b6d6dSopenharmony_ci len = filelines[i].len; 992e5b6d6dSopenharmony_ci filelines_[i].name = new UChar[len]; 1002e5b6d6dSopenharmony_ci filelines_[i].len = len; 1012e5b6d6dSopenharmony_ci memcpy(filelines_[i].name, filelines[i].name, len * U_SIZEOF_UCHAR); 1022e5b6d6dSopenharmony_ci } 1032e5b6d6dSopenharmony_ci 1042e5b6d6dSopenharmony_ci }else if(bulk_mode){ 1052e5b6d6dSopenharmony_ci int32_t srcLen = 0; 1062e5b6d6dSopenharmony_ci const UChar* src = getBuffer(srcLen,status); 1072e5b6d6dSopenharmony_ci if(U_FAILURE(status)){ 1082e5b6d6dSopenharmony_ci fprintf(stderr, "FAILED to read buffer from file and create UPerfTest object. Error: %s\n", u_errorName(status)); 1092e5b6d6dSopenharmony_ci return; 1102e5b6d6dSopenharmony_ci } 1112e5b6d6dSopenharmony_ci 1122e5b6d6dSopenharmony_ci StrBuffer = new UChar[srcLen]; 1132e5b6d6dSopenharmony_ci StrBufferLen = srcLen; 1142e5b6d6dSopenharmony_ci memcpy(StrBuffer, src, srcLen * U_SIZEOF_UCHAR); 1152e5b6d6dSopenharmony_ci 1162e5b6d6dSopenharmony_ci } 1172e5b6d6dSopenharmony_ci} 1182e5b6d6dSopenharmony_ci 1192e5b6d6dSopenharmony_ciStringPerformanceTest::~StringPerformanceTest() 1202e5b6d6dSopenharmony_ci{ 1212e5b6d6dSopenharmony_ci delete[] filelines_; 1222e5b6d6dSopenharmony_ci delete[] StrBuffer; 1232e5b6d6dSopenharmony_ci} 1242e5b6d6dSopenharmony_ci 1252e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::runIndexedTest(int32_t index, UBool exec, 1262e5b6d6dSopenharmony_ci const char *&name, 1272e5b6d6dSopenharmony_ci char* par) 1282e5b6d6dSopenharmony_ci{ 1292e5b6d6dSopenharmony_ci switch (index) { 1302e5b6d6dSopenharmony_ci TESTCASE(0, TestCtor); 1312e5b6d6dSopenharmony_ci TESTCASE(1, TestCtor1); 1322e5b6d6dSopenharmony_ci TESTCASE(2, TestCtor2); 1332e5b6d6dSopenharmony_ci TESTCASE(3, TestCtor3); 1342e5b6d6dSopenharmony_ci TESTCASE(4, TestAssign); 1352e5b6d6dSopenharmony_ci TESTCASE(5, TestAssign1); 1362e5b6d6dSopenharmony_ci TESTCASE(6, TestAssign2); 1372e5b6d6dSopenharmony_ci TESTCASE(7, TestGetch); 1382e5b6d6dSopenharmony_ci TESTCASE(8, TestCatenate); 1392e5b6d6dSopenharmony_ci TESTCASE(9, TestScan); 1402e5b6d6dSopenharmony_ci TESTCASE(10, TestScan1); 1412e5b6d6dSopenharmony_ci TESTCASE(11, TestScan2); 1422e5b6d6dSopenharmony_ci 1432e5b6d6dSopenharmony_ci TESTCASE(12, TestStdLibCtor); 1442e5b6d6dSopenharmony_ci TESTCASE(13, TestStdLibCtor1); 1452e5b6d6dSopenharmony_ci TESTCASE(14, TestStdLibCtor2); 1462e5b6d6dSopenharmony_ci TESTCASE(15, TestStdLibCtor3); 1472e5b6d6dSopenharmony_ci TESTCASE(16, TestStdLibAssign); 1482e5b6d6dSopenharmony_ci TESTCASE(17, TestStdLibAssign1); 1492e5b6d6dSopenharmony_ci TESTCASE(18, TestStdLibAssign2); 1502e5b6d6dSopenharmony_ci TESTCASE(19, TestStdLibGetch); 1512e5b6d6dSopenharmony_ci TESTCASE(20, TestStdLibCatenate); 1522e5b6d6dSopenharmony_ci TESTCASE(21, TestStdLibScan); 1532e5b6d6dSopenharmony_ci TESTCASE(22, TestStdLibScan1); 1542e5b6d6dSopenharmony_ci TESTCASE(23, TestStdLibScan2); 1552e5b6d6dSopenharmony_ci 1562e5b6d6dSopenharmony_ci default: 1572e5b6d6dSopenharmony_ci name = ""; 1582e5b6d6dSopenharmony_ci return NULL; 1592e5b6d6dSopenharmony_ci } 1602e5b6d6dSopenharmony_ci return NULL; 1612e5b6d6dSopenharmony_ci} 1622e5b6d6dSopenharmony_ci 1632e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestCtor() 1642e5b6d6dSopenharmony_ci{ 1652e5b6d6dSopenharmony_ci if (line_mode) { 1662e5b6d6dSopenharmony_ci return new StringPerfFunction(ctor, filelines_, numLines, uselen); 1672e5b6d6dSopenharmony_ci } else { 1682e5b6d6dSopenharmony_ci return new StringPerfFunction(ctor, StrBuffer, StrBufferLen, uselen); 1692e5b6d6dSopenharmony_ci } 1702e5b6d6dSopenharmony_ci} 1712e5b6d6dSopenharmony_ci 1722e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestCtor1() 1732e5b6d6dSopenharmony_ci{ 1742e5b6d6dSopenharmony_ci if (line_mode) { 1752e5b6d6dSopenharmony_ci return new StringPerfFunction(ctor1, filelines_, numLines, uselen); 1762e5b6d6dSopenharmony_ci } else { 1772e5b6d6dSopenharmony_ci return new StringPerfFunction(ctor1, StrBuffer, StrBufferLen, uselen); 1782e5b6d6dSopenharmony_ci } 1792e5b6d6dSopenharmony_ci} 1802e5b6d6dSopenharmony_ci 1812e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestCtor2() 1822e5b6d6dSopenharmony_ci{ 1832e5b6d6dSopenharmony_ci if (line_mode) { 1842e5b6d6dSopenharmony_ci return new StringPerfFunction(ctor2, filelines_, numLines, uselen); 1852e5b6d6dSopenharmony_ci } else { 1862e5b6d6dSopenharmony_ci return new StringPerfFunction(ctor2, StrBuffer, StrBufferLen, uselen); 1872e5b6d6dSopenharmony_ci } 1882e5b6d6dSopenharmony_ci} 1892e5b6d6dSopenharmony_ci 1902e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestCtor3() 1912e5b6d6dSopenharmony_ci{ 1922e5b6d6dSopenharmony_ci if (line_mode) { 1932e5b6d6dSopenharmony_ci return new StringPerfFunction(ctor3, filelines_, numLines, uselen); 1942e5b6d6dSopenharmony_ci } else { 1952e5b6d6dSopenharmony_ci return new StringPerfFunction(ctor3, StrBuffer, StrBufferLen, uselen); 1962e5b6d6dSopenharmony_ci } 1972e5b6d6dSopenharmony_ci} 1982e5b6d6dSopenharmony_ci 1992e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestAssign() 2002e5b6d6dSopenharmony_ci{ 2012e5b6d6dSopenharmony_ci if (line_mode) { 2022e5b6d6dSopenharmony_ci return new StringPerfFunction(assign, filelines_, numLines, uselen); 2032e5b6d6dSopenharmony_ci } else { 2042e5b6d6dSopenharmony_ci return new StringPerfFunction(assign, StrBuffer, StrBufferLen, uselen); 2052e5b6d6dSopenharmony_ci } 2062e5b6d6dSopenharmony_ci} 2072e5b6d6dSopenharmony_ci 2082e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestAssign1() 2092e5b6d6dSopenharmony_ci{ 2102e5b6d6dSopenharmony_ci if (line_mode) { 2112e5b6d6dSopenharmony_ci return new StringPerfFunction(assign1, filelines_, numLines, uselen); 2122e5b6d6dSopenharmony_ci } else { 2132e5b6d6dSopenharmony_ci return new StringPerfFunction(assign1, StrBuffer, StrBufferLen, uselen); 2142e5b6d6dSopenharmony_ci } 2152e5b6d6dSopenharmony_ci} 2162e5b6d6dSopenharmony_ci 2172e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestAssign2() 2182e5b6d6dSopenharmony_ci{ 2192e5b6d6dSopenharmony_ci if (line_mode) { 2202e5b6d6dSopenharmony_ci return new StringPerfFunction(assign2, filelines_, numLines, uselen); 2212e5b6d6dSopenharmony_ci } else { 2222e5b6d6dSopenharmony_ci return new StringPerfFunction(assign2, StrBuffer, StrBufferLen, uselen); 2232e5b6d6dSopenharmony_ci } 2242e5b6d6dSopenharmony_ci} 2252e5b6d6dSopenharmony_ci 2262e5b6d6dSopenharmony_ci 2272e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestGetch() 2282e5b6d6dSopenharmony_ci{ 2292e5b6d6dSopenharmony_ci if (line_mode) { 2302e5b6d6dSopenharmony_ci return new StringPerfFunction(getch, filelines_, numLines, uselen); 2312e5b6d6dSopenharmony_ci } else { 2322e5b6d6dSopenharmony_ci return new StringPerfFunction(getch, StrBuffer, StrBufferLen, uselen); 2332e5b6d6dSopenharmony_ci } 2342e5b6d6dSopenharmony_ci} 2352e5b6d6dSopenharmony_ci 2362e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestCatenate() 2372e5b6d6dSopenharmony_ci{ 2382e5b6d6dSopenharmony_ci if (line_mode) { 2392e5b6d6dSopenharmony_ci return new StringPerfFunction(catenate, filelines_, numLines, uselen); 2402e5b6d6dSopenharmony_ci } else { 2412e5b6d6dSopenharmony_ci //return new StringPerfFunction(catenate, buffer, bufferLen, uselen); 2422e5b6d6dSopenharmony_ci return new StringPerfFunction(catenate, StrBuffer, StrBufferLen, uselen); 2432e5b6d6dSopenharmony_ci } 2442e5b6d6dSopenharmony_ci} 2452e5b6d6dSopenharmony_ci 2462e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestScan() 2472e5b6d6dSopenharmony_ci{ 2482e5b6d6dSopenharmony_ci if (line_mode) { 2492e5b6d6dSopenharmony_ci return new StringPerfFunction(scan, filelines_, numLines, uselen); 2502e5b6d6dSopenharmony_ci } else { 2512e5b6d6dSopenharmony_ci return new StringPerfFunction(scan, StrBuffer, StrBufferLen, uselen); 2522e5b6d6dSopenharmony_ci } 2532e5b6d6dSopenharmony_ci} 2542e5b6d6dSopenharmony_ci 2552e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestScan1() 2562e5b6d6dSopenharmony_ci{ 2572e5b6d6dSopenharmony_ci if (line_mode) { 2582e5b6d6dSopenharmony_ci return new StringPerfFunction(scan1, filelines_, numLines, uselen); 2592e5b6d6dSopenharmony_ci } else { 2602e5b6d6dSopenharmony_ci return new StringPerfFunction(scan1, StrBuffer, StrBufferLen, uselen); 2612e5b6d6dSopenharmony_ci } 2622e5b6d6dSopenharmony_ci} 2632e5b6d6dSopenharmony_ci 2642e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestScan2() 2652e5b6d6dSopenharmony_ci{ 2662e5b6d6dSopenharmony_ci if (line_mode) { 2672e5b6d6dSopenharmony_ci return new StringPerfFunction(scan2, filelines_, numLines, uselen); 2682e5b6d6dSopenharmony_ci } else { 2692e5b6d6dSopenharmony_ci return new StringPerfFunction(scan2, StrBuffer, StrBufferLen, uselen); 2702e5b6d6dSopenharmony_ci } 2712e5b6d6dSopenharmony_ci} 2722e5b6d6dSopenharmony_ci 2732e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestStdLibCtor() 2742e5b6d6dSopenharmony_ci{ 2752e5b6d6dSopenharmony_ci if (line_mode) { 2762e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibCtor, filelines_, numLines, uselen); 2772e5b6d6dSopenharmony_ci } else { 2782e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibCtor, StrBuffer, StrBufferLen, uselen); 2792e5b6d6dSopenharmony_ci } 2802e5b6d6dSopenharmony_ci} 2812e5b6d6dSopenharmony_ci 2822e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestStdLibCtor1() 2832e5b6d6dSopenharmony_ci{ 2842e5b6d6dSopenharmony_ci if (line_mode) { 2852e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibCtor1, filelines_, numLines, uselen); 2862e5b6d6dSopenharmony_ci } else { 2872e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibCtor1, StrBuffer, StrBufferLen, uselen); 2882e5b6d6dSopenharmony_ci } 2892e5b6d6dSopenharmony_ci} 2902e5b6d6dSopenharmony_ci 2912e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestStdLibCtor2() 2922e5b6d6dSopenharmony_ci{ 2932e5b6d6dSopenharmony_ci if (line_mode) { 2942e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibCtor2, filelines_, numLines, uselen); 2952e5b6d6dSopenharmony_ci } else { 2962e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibCtor2, StrBuffer, StrBufferLen, uselen); 2972e5b6d6dSopenharmony_ci } 2982e5b6d6dSopenharmony_ci} 2992e5b6d6dSopenharmony_ci 3002e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestStdLibCtor3() 3012e5b6d6dSopenharmony_ci{ 3022e5b6d6dSopenharmony_ci if (line_mode) { 3032e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibCtor3, filelines_, numLines, uselen); 3042e5b6d6dSopenharmony_ci } else { 3052e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibCtor3, StrBuffer, StrBufferLen, uselen); 3062e5b6d6dSopenharmony_ci } 3072e5b6d6dSopenharmony_ci} 3082e5b6d6dSopenharmony_ci 3092e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestStdLibAssign() 3102e5b6d6dSopenharmony_ci{ 3112e5b6d6dSopenharmony_ci if (line_mode) { 3122e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibAssign, filelines_, numLines, uselen); 3132e5b6d6dSopenharmony_ci } else { 3142e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibAssign, StrBuffer, StrBufferLen, uselen); 3152e5b6d6dSopenharmony_ci } 3162e5b6d6dSopenharmony_ci} 3172e5b6d6dSopenharmony_ci 3182e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestStdLibAssign1() 3192e5b6d6dSopenharmony_ci{ 3202e5b6d6dSopenharmony_ci if (line_mode) { 3212e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibAssign1, filelines_, numLines, uselen); 3222e5b6d6dSopenharmony_ci } else { 3232e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibAssign1, StrBuffer, StrBufferLen, uselen); 3242e5b6d6dSopenharmony_ci } 3252e5b6d6dSopenharmony_ci} 3262e5b6d6dSopenharmony_ci 3272e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestStdLibAssign2() 3282e5b6d6dSopenharmony_ci{ 3292e5b6d6dSopenharmony_ci if (line_mode) { 3302e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibAssign2, filelines_, numLines, uselen); 3312e5b6d6dSopenharmony_ci } else { 3322e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibAssign2, StrBuffer, StrBufferLen, uselen); 3332e5b6d6dSopenharmony_ci } 3342e5b6d6dSopenharmony_ci} 3352e5b6d6dSopenharmony_ci 3362e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestStdLibGetch() 3372e5b6d6dSopenharmony_ci{ 3382e5b6d6dSopenharmony_ci if (line_mode) { 3392e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibGetch, filelines_, numLines, uselen); 3402e5b6d6dSopenharmony_ci } else { 3412e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibGetch, StrBuffer, StrBufferLen, uselen); 3422e5b6d6dSopenharmony_ci } 3432e5b6d6dSopenharmony_ci} 3442e5b6d6dSopenharmony_ci 3452e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestStdLibCatenate() 3462e5b6d6dSopenharmony_ci{ 3472e5b6d6dSopenharmony_ci if (line_mode) { 3482e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibCatenate, filelines_, numLines, uselen); 3492e5b6d6dSopenharmony_ci } else { 3502e5b6d6dSopenharmony_ci //return new StringPerfFunction(StdLibCatenate, buffer, bufferLen, uselen); 3512e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibCatenate, StrBuffer, StrBufferLen, uselen); 3522e5b6d6dSopenharmony_ci } 3532e5b6d6dSopenharmony_ci} 3542e5b6d6dSopenharmony_ci 3552e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestStdLibScan() 3562e5b6d6dSopenharmony_ci{ 3572e5b6d6dSopenharmony_ci if (line_mode) { 3582e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibScan, filelines_, numLines, uselen); 3592e5b6d6dSopenharmony_ci } else { 3602e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibScan, StrBuffer, StrBufferLen, uselen); 3612e5b6d6dSopenharmony_ci } 3622e5b6d6dSopenharmony_ci} 3632e5b6d6dSopenharmony_ci 3642e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestStdLibScan1() 3652e5b6d6dSopenharmony_ci{ 3662e5b6d6dSopenharmony_ci if (line_mode) { 3672e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibScan1, filelines_, numLines, uselen); 3682e5b6d6dSopenharmony_ci } else { 3692e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibScan1, StrBuffer, StrBufferLen, uselen); 3702e5b6d6dSopenharmony_ci } 3712e5b6d6dSopenharmony_ci} 3722e5b6d6dSopenharmony_ci 3732e5b6d6dSopenharmony_ciUPerfFunction* StringPerformanceTest::TestStdLibScan2() 3742e5b6d6dSopenharmony_ci{ 3752e5b6d6dSopenharmony_ci if (line_mode) { 3762e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibScan2, filelines_, numLines, uselen); 3772e5b6d6dSopenharmony_ci } else { 3782e5b6d6dSopenharmony_ci return new StringPerfFunction(StdLibScan2, StrBuffer, StrBufferLen, uselen); 3792e5b6d6dSopenharmony_ci } 3802e5b6d6dSopenharmony_ci} 3812e5b6d6dSopenharmony_ci 3822e5b6d6dSopenharmony_ci 383