185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/******************************************************************** 285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * COPYRIGHT: 38393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Copyright (C) 2008-2012 IBM, Inc. All Rights Reserved. 485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * 585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ********************************************************************/ 685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#ifndef _STRSRCHPERF_H 785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#define _STRSRCHPERF_H 885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "unicode/usearch.h" 1085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "unicode/uperf.h" 1185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include <stdlib.h> 1285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include <stdio.h> 1385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 1485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hotypedef void (*StrSrchFn)(UStringSearch* srch, const UChar* src,int32_t srcLen, const UChar* pttrn, int32_t pttrnLen, UErrorCode* status); 1585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 1685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoclass StringSearchPerfFunction : public UPerfFunction { 1785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoprivate: 1885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho StrSrchFn fn; 1985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const UChar* src; 2085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho int32_t srcLen; 2185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const UChar* pttrn; 2285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho int32_t pttrnLen; 2385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UStringSearch* srch; 2485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 2585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hopublic: 2685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual void call(UErrorCode* status) { 2785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho (*fn)(srch, src, srcLen, pttrn, pttrnLen, status); 2885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 2985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 3085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual long getOperationsPerIteration() { 3185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return (long) srcLen; 3285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 3385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 3485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho StringSearchPerfFunction(StrSrchFn func, UStringSearch* search, const UChar* source,int32_t sourceLen, const UChar* pattern, int32_t patternLen) { 3585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fn = func; 3685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho src = source; 3785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho srcLen = sourceLen; 3885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho pttrn = pattern; 3985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho pttrnLen = patternLen; 4085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho srch = search; 4185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 4285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho}; 4385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 4485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoclass StringSearchPerformanceTest : public UPerfTest { 4585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoprivate: 4685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const UChar* src; 4785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho int32_t srcLen; 4885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UChar* pttrn; 4985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho int32_t pttrnLen; 5085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UStringSearch* srch; 5185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 5285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hopublic: 5385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho StringSearchPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status); 5485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ~StringSearchPerformanceTest(); 5585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL); 5685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UPerfFunction* Test_ICU_Forward_Search(); 5785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UPerfFunction* Test_ICU_Backward_Search(); 5885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho}; 5985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 6085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 6185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid ICUForwardSearch(UStringSearch *srch, const UChar* source, int32_t sourceLen, const UChar* pattern, int32_t patternLen, UErrorCode* status) { 6285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho int32_t match; 6385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 6485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho match = usearch_first(srch, status); 6585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho while (match != USEARCH_DONE) { 6685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho match = usearch_next(srch, status); 6785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 6885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 6985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 7085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid ICUBackwardSearch(UStringSearch *srch, const UChar* source, int32_t sourceLen, const UChar* pattern, int32_t patternLen, UErrorCode* status) { 7185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho int32_t match; 7285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 7385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho match = usearch_last(srch, status); 7485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho while (match != USEARCH_DONE) { 7585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho match = usearch_previous(srch, status); 7685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 7785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 7885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 7985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#endif /* _STRSRCHPERF_H */ 80