| Index: icu46/source/test/perf/strsrchperf/strsrchperf.h
|
| ===================================================================
|
| --- icu46/source/test/perf/strsrchperf/strsrchperf.h (revision 0)
|
| +++ icu46/source/test/perf/strsrchperf/strsrchperf.h (revision 0)
|
| @@ -0,0 +1,137 @@
|
| +/********************************************************************
|
| + * COPYRIGHT:
|
| + * Copyright (C) 2008-2009 IBM, Inc. All Rights Reserved.
|
| + *
|
| + ********************************************************************/
|
| +#ifndef _STRSRCHPERF_H
|
| +#define _STRSRCHPERF_H
|
| +
|
| +#include "unicode/ubrk.h"
|
| +#include "unicode/usearch.h"
|
| +#include "unicode/colldata.h"
|
| +#include "unicode/bmsearch.h"
|
| +#include "unicode/uperf.h"
|
| +#include <stdlib.h>
|
| +#include <stdio.h>
|
| +
|
| +#define TEST_BOYER_MOORE_SEARCH
|
| +
|
| +#ifdef TEST_BOYER_MOORE_SEARCH
|
| +typedef void (*StrSrchFn) (BoyerMooreSearch * bms, const UChar *src, int32_t srcLen, const UChar *pttrn, int32_t pttrnLen, UErrorCode *status);
|
| +#else
|
| +typedef void (*StrSrchFn)(UStringSearch* srch, const UChar* src,int32_t srcLen, const UChar* pttrn, int32_t pttrnLen, UErrorCode* status);
|
| +#endif
|
| +
|
| +class StringSearchPerfFunction : public UPerfFunction {
|
| +private:
|
| + StrSrchFn fn;
|
| + const UChar* src;
|
| + int32_t srcLen;
|
| + const UChar* pttrn;
|
| + int32_t pttrnLen;
|
| +#ifdef TEST_BOYER_MOORE_SEARCH
|
| + BoyerMooreSearch *bms;
|
| +#else
|
| + UStringSearch* srch;
|
| +#endif
|
| +
|
| +public:
|
| + virtual void call(UErrorCode* status) {
|
| +#ifdef TEST_BOYER_MOORE_SEARCH
|
| + (*fn)(bms, src, srcLen, pttrn, pttrnLen, status);
|
| +#else
|
| + (*fn)(srch, src, srcLen, pttrn, pttrnLen, status);
|
| +#endif
|
| + }
|
| +
|
| + virtual long getOperationsPerIteration() {
|
| +#if 0
|
| + return (long)(srcLen/pttrnLen);
|
| +#else
|
| + return (long) srcLen;
|
| +#endif
|
| + }
|
| +
|
| +#ifdef TEST_BOYER_MOORE_SEARCH
|
| + StringSearchPerfFunction(StrSrchFn func, BoyerMooreSearch *search, const UChar *source, int32_t sourceLen, const UChar *pattern, int32_t patternLen) {
|
| + fn = func;
|
| + src = source;
|
| + srcLen = sourceLen;
|
| + pttrn = pattern;
|
| + pttrnLen = patternLen;
|
| + bms = search;
|
| + }
|
| +#else
|
| + StringSearchPerfFunction(StrSrchFn func, UStringSearch* search, const UChar* source,int32_t sourceLen, const UChar* pattern, int32_t patternLen) {
|
| + fn = func;
|
| + src = source;
|
| + srcLen = sourceLen;
|
| + pttrn = pattern;
|
| + pttrnLen = patternLen;
|
| + srch = search;
|
| + }
|
| +#endif
|
| +};
|
| +
|
| +class StringSearchPerformanceTest : public UPerfTest {
|
| +private:
|
| + const UChar* src;
|
| + int32_t srcLen;
|
| + UChar* pttrn;
|
| + int32_t pttrnLen;
|
| +#ifdef TEST_BOYER_MOORE_SEARCH
|
| + UnicodeString *targetString;
|
| + BoyerMooreSearch *bms;
|
| +#else
|
| + UStringSearch* srch;
|
| +#endif
|
| +
|
| +public:
|
| + StringSearchPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
|
| + ~StringSearchPerformanceTest();
|
| + virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL);
|
| +
|
| + UPerfFunction* Test_ICU_Forward_Search();
|
| +
|
| + UPerfFunction* Test_ICU_Backward_Search();
|
| +};
|
| +
|
| +
|
| +#ifdef TEST_BOYER_MOORE_SEARCH
|
| +void ICUForwardSearch(BoyerMooreSearch *bms, const UChar *source, int32_t sourceLen, const UChar *pattern, int32_t patternLen, UErrorCode * /*status*/) {
|
| + int32_t offset = 0, start = -1, end = -1;
|
| +
|
| + while (bms->search(offset, start, end)) {
|
| + offset = end;
|
| + }
|
| +}
|
| +
|
| +void ICUBackwardSearch(BoyerMooreSearch *bms, const UChar *source, int32_t sourceLen, const UChar *pattern, int32_t patternLen, UErrorCode * /*status*/) {
|
| + int32_t offset = 0, start = -1, end = -1;
|
| +
|
| + /* NOTE: No Boyer-Moore backward search yet... */
|
| + while (bms->search(offset, start, end)) {
|
| + offset = end;
|
| + }
|
| +}
|
| +#else
|
| +void ICUForwardSearch(UStringSearch *srch, const UChar* source, int32_t sourceLen, const UChar* pattern, int32_t patternLen, UErrorCode* status) {
|
| + int32_t match;
|
| +
|
| + match = usearch_first(srch, status);
|
| + while (match != USEARCH_DONE) {
|
| + match = usearch_next(srch, status);
|
| + }
|
| +}
|
| +
|
| +void ICUBackwardSearch(UStringSearch *srch, const UChar* source, int32_t sourceLen, const UChar* pattern, int32_t patternLen, UErrorCode* status) {
|
| + int32_t match;
|
| +
|
| + match = usearch_last(srch, status);
|
| + while (match != USEARCH_DONE) {
|
| + match = usearch_previous(srch, status);
|
| + }
|
| +}
|
| +#endif
|
| +
|
| +#endif /* _STRSRCHPERF_H */
|
|
|
| Property changes on: icu46/source/test/perf/strsrchperf/strsrchperf.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|