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