Go to the documentation of this file.
13 #include "util/test.h"
14 #include "util/logging.h"
15 #include "util/strutil.h"
18 #include "re2/regexp.h"
19 #include "util/pcre.h"
20 #include "util/benchmark.h"
38 const char*
text =
"650-253-0001";
51 const char* regexp =
"(\\d+)-(\\d+)-(\\d+)";
52 const char*
text =
"650-253-0001";
104 fprintf(
stderr,
"sizeof: PCRE=%zd RE2=%zd Prog=%zd Inst=%zd\n",
146 text->resize(nbytes);
147 for (
int i = 0;
i < nbytes;
i++) {
150 int byte = rand() & 0x7F;
171 #define EASY0 "ABCDEFGHIJKLMNOPQRSTUVWXYZ$"
172 #define EASY1 "A[AB]B[BC]C[CD]D[DE]E[EF]F[FG]G[GH]H[HI]I[IJ]J$"
177 #define MEDIUM "[XYZ]ABCDEFGHIJKLMNOPQRSTUVWXYZ$"
182 #define HARD "[ -~]*ABCDEFGHIJKLMNOPQRSTUVWXYZ$"
186 #define FANOUT "(?:[\\x{80}-\\x{10FFFF}]?){100}[\\x{80}-\\x{10FFFF}]"
189 #define PARENS "([ -~])*(A)(B)(C)(D)(E)(F)(G)(H)(I)(J)(K)(L)(M)" \
190 "(N)(O)(P)(Q)(R)(S)(T)(U)(V)(W)(X)(Y)(Z)$"
267 s.append(nbytes/2,
'x');
296 s.append(
"Hello World");
298 RE2 re(
"((Hello World))");
299 for (
int i = 0;
i < iters;
i++) {
456 void (*parse3)(
int,
const char*,
const StringPiece&)) {
458 parse3(iters,
"([0-9]+)-([0-9]+)-([0-9]+)",
"650-253-0001");
495 void (*parse3)(
int,
const char*,
const StringPiece&)) {
497 parse3(iters,
"(\\d+)-(\\d+)-(\\d+)",
"650-253-0001");
536 void (*parse1)(
int,
const char*,
const StringPiece&)) {
538 parse1(iters,
"[0-9]+-(.*)",
"650-253-0001");
575 run(iters,
"[0-9]+.(.*)",
"650-253-0001");
610 s.append(100000,
'x');
611 s.append(
"650-253-0001");
613 run(iters,
"[0-9]+.(.*)", s);
630 s.append(
"650-253-");
631 s.append(100000,
'0');
633 run(iters,
"[0-9]+.(.*)", s);
649 for (
int i = 0;
i < iters;
i++) {
657 for (
int i = 0;
i < iters;
i++) {
670 for (
int i = 0;
i < iters;
i++) {
677 for (
int i = 0;
i < iters;
i++) {
691 for (
int i = 0;
i < iters;
i++) {
704 for (
int i = 0;
i < iters;
i++) {
717 for (
int i = 0;
i < iters;
i++) {
718 prog->ComputeByteMap();
725 for (
int i = 0;
i < iters;
i++) {
732 for (
int i = 0;
i < iters;
i++) {
746 DEFINE_string(compile_regexp,
"(.*)-(\\d+)-of-(\\d+)",
"regexp for compile benchmarks");
778 s.append(
"(650) 253-0001");
781 search(iters,
"(\\d{3}-|\\(\\d{3}\\)\\s+)(\\d{3}-\\d{4})", s);
886 for (
int i = 0;
i < iters;
i++) {
893 NULL, &failed, NULL),
903 for (
int i = 0;
i < iters;
i++) {
918 for (
int i = 0;
i < iters;
i++) {
933 for (
int i = 0;
i < iters;
i++) {
948 for (
int i = 0;
i < iters;
i++) {
960 for (
int i = 0;
i < iters;
i++) {
980 for (
int i = 0;
i < iters;
i++) {
983 NULL, &failed, NULL),
997 for (
int i = 0;
i < iters;
i++) {
1013 for (
int i = 0;
i < iters;
i++)
1027 for (
int i = 0;
i < iters;
i++)
1038 for (
int i = 0;
i < iters;
i++) {
1050 for (
int i = 0;
i < iters;
i++) {
1063 for (
int i = 0;
i < iters;
i++) {
1077 for (
int i = 0;
i < iters;
i++) {
1091 for (
int i = 0;
i < iters;
i++) {
1105 for (
int i = 0;
i < iters;
i++) {
1118 for (
int i = 0;
i < iters;
i++) {
1127 for (
int i = 0;
i < iters;
i++) {
1141 for (
int i = 0;
i < iters;
i++) {
1156 for (
int i = 0;
i < iters;
i++)
1169 for (
int i = 0;
i < iters;
i++)
1181 for (
int i = 0;
i < iters;
i++)
1191 for (
int i = 0;
i < iters;
i++) {
1200 for (
int i = 0;
i < iters;
i++) {
1210 for (
int i = 0;
i < iters;
i++) {
1224 for (
int i = 0;
i < iters;
i++) {
1238 for (
int i = 0;
i < iters;
i++) {
1252 for (
int i = 0;
i < iters;
i++) {
1261 for (
int i = 0;
i < iters;
i++) {
1275 for (
int i = 0;
i < iters;
i++) {
1290 for (
int i = 0;
i < iters;
i++)
1303 for (
int i = 0;
i < iters;
i++)
1315 for (
int i = 0;
i < iters;
i++)
1325 for (
int i = 0;
i < iters;
i++) {
1334 for (
int i = 0;
i < iters;
i++) {
1343 for (
int i = 0;
i < iters;
i++) {
1353 for (
int i = 0;
i < iters;
i++) {
1363 for (
int i = 0;
i < iters;
i++) {
1373 for (
int i = 0;
i < iters;
i++) {
1381 for (
int i = 0;
i <
n;
i++) {
1388 for (
int i = 0;
i <
n;
i++) {
1399 for (
int i = 0;
i <
n;
i++) {
1406 for (
int i = 0;
i <
n;
i++) {
1416 "GET /asdfhjasdhfasdlfhasdflkjasdfkljasdhflaskdjhf"
1417 "alksdjfhasdlkfhasdlkjfhasdljkfhadsjklf HTTP/1.1";
1421 PCRE re(
"(?-s)^(?:GET|POST) +([^ ]+) HTTP");
1422 for (
int i = 0;
i <
n;
i++) {
1429 RE2 re(
"(?-s)^(?:GET|POST) +([^ ]+) HTTP");
1430 for (
int i = 0;
i <
n;
i++) {
1441 "GET /abc HTTP/1.1";
1445 PCRE re(
"(?-s)^(?:GET|POST) +([^ ]+) HTTP");
1446 for (
int i = 0;
i <
n;
i++) {
1453 RE2 re(
"(?-s)^(?:GET|POST) +([^ ]+) HTTP");
1454 for (
int i = 0;
i <
n;
i++) {
1466 PCRE re(
"(?-s)^(.+)");
1467 for (
int i = 0;
i <
n;
i++) {
1474 RE2 re(
"(?-s)^(.+)");
1475 for (
int i = 0;
i <
n;
i++) {
1487 PCRE re(
"(?-s)^([ -~]+)");
1488 for (
int i = 0;
i <
n;
i++) {
1495 RE2 re(
"(?-s)^([ -~]+)");
1496 for (
int i = 0;
i <
n;
i++) {
1514 for (
int i = 0;
i <
iter;
i++)
1527 for (
int i = 0;
i <
iter;
i++)
1562 const int kMaxLen = 16;
1563 for (
int i = 0;
i <
iter;
i++) {
void FullMatchPCRE(int iter, int n, const char *regexp)
void Parse_CachedSplitBig1_RE2(int i)
void StopBenchmarkTiming()
ParseImpl Parse1CachedNFA
void Search_Hard_CachedRE2(int i, int n)
void Search_AltMatch_BitState(int i, int n)
void Parse_Split_RE2(int i)
void Search_Parens_CachedDFA(int i, int n)
ParseImpl SearchParse2CachedRE2
void SetBenchmarkItemsProcessed(int n)
static bool FullMatch(const StringPiece &text, const RE2 &re, A &&... a)
SearchImpl SearchCachedPCRE
static std::string http_text
void SimplifyRegexp(int iters, const std::string ®exp)
void Search_Digits_BitState(int i)
void Search_Digits_OnePass(int i)
ParseImpl Parse1CachedRE2
ParseImpl Parse1CachedBacktrack
ParseImpl SearchParse2CachedPCRE
void Parse_CachedSplit_BitState(int i)
void Search_Fanout_CachedDFA(int i, int n)
void SearchPhone_CachedPCRE(int i, int n)
void NullWalkRegexp(int iters, const std::string ®exp)
void Search_Success1_NFA(int i, int n)
void Search_Success_OnePass(int i, int n)
void FullMatch_DotStar_CachedPCRE(int i, int n)
void Parse_CachedSplitBig1_PCRE(int i)
void Search_Success1_BitState(int i, int n)
ParseImpl Parse3CachedRE2
void Search_Hard_CachedDFA(int i, int n)
DEFINE_string(compile_regexp, "(.*)-(\\d+)-of-(\\d+)", "regexp for compile benchmarks")
void Parse_DigitDs_PCRE(int i)
bool PossibleMatchRange(std::string *min, std::string *max, int maxlen) const
void Search_Parens_CachedRE2(int i, int n)
void Parse_CachedDigits_OnePass(int i)
void EmptyPartialMatchPCRE(int n)
void Parse1Split(int iters, void(*parse1)(int, const char *, const StringPiece &))
static const PartialMatchFunctor PartialMatch
void SearchSuccess(int iters, int nbytes, const char *regexp, SearchImpl *search)
void Parse_SplitHard_BitState(int i)
void SmallHTTPPartialMatchRE2(int n)
void Search_BigFixed_CachedRE2(int i, int n)
void Parse_CachedSplitHard_RE2(int i)
void Search_Success_CachedOnePass(int i, int n)
void SimplePartialMatchPCRE(int n)
void ASCIIMatchPCRE(int n)
void Parse_Digits_Backtrack(int i)
OPENSSL_EXPORT pem_password_cb void * u
const std::string & error() const
void Parse_DigitDs_BitState(int i)
const std::string & error() const
ParseImpl Parse1CachedOnePass
void Search_Success1_PCRE(int i, int n)
void Search_AltMatch_NFA(int i, int n)
void Parse_Split_OnePass(int i)
Prog * CompileToProg(int64_t max_mem)
void Parse_CachedSplit_PCRE(int i)
void SearchDigits(int iters, SearchImpl *search)
void Search_AltMatch_CachedRE2(int i, int n)
void Parse_CachedDigitDs_BitState(int i)
void Search_Easy0_CachedRE2(int i, int n)
void BenchmarkMemoryUsage()
void Parse_SplitHard_RE2(int i)
SearchImpl SearchCachedBitState
void Search(int iters, int nbytes, const char *regexp, SearchImpl *search)
void Parse_CachedSplitHard_Backtrack(int i)
void Parse_CachedDigitDs_NFA(int i)
void Parse_Digits_PCRE(int i)
ParseImpl Parse3CachedOnePass
void Parse_CachedDigitDs_PCRE(int i)
void MakeText(std::string *text, int nbytes)
void Search_Fanout_CachedNFA(int i, int n)
void Parse_CachedDigits_BitState(int i)
SearchImpl SearchCachedDFA
void BM_CompileByteMap(int i)
void CompileRegexp(int iters, const std::string ®exp)
void CompileByteMap(int iters, const std::string ®exp)
void Search_Success1_CachedRE2(int i, int n)
void SimplePartialMatchRE2(int n)
void Parse_CachedDigits_Backtrack(int i)
static bool FindAndConsume(StringPiece *input, const RE2 &re, A &&... a)
long long PeakHeapGrowth()
void Parse_CachedDigitDs_OnePass(int i)
void Search_Success_NFA(int i, int n)
void Search_AltMatch_CachedBitState(int i, int n)
void BM_RE2_Compile(int i)
static std::string smallhttp_text
void SearchBigFixed(int iters, int nbytes, SearchImpl *search)
static const FullMatchFunctor FullMatch
void ASCIIMatchRE2(int n)
void ParseImpl(int iters, const char *regexp, const StringPiece &text)
void CompileToProg(int iters, const std::string ®exp)
SearchImpl SearchCachedRE2
void Search_BigFixed_CachedDFA(int i, int n)
ParseImpl Parse1Backtrack
void FullMatch_DotStarCapture_CachedPCRE(int i, int n)
void ParseRegexp(int iters, const std::string ®exp)
BENCHMARK_RANGE(Search_Easy0_CachedDFA, 8, 16<< 20) -> ThreadRange(1, NumCPUs())
void BM_CompileToProg(int i)
void Search_Easy1_CachedNFA(int i, int n)
ParseImpl Parse3CachedNFA
void SmallHTTPPartialMatchPCRE(int n)
void Search_AltMatch_CachedPCRE(int i, int n)
void Parse_DigitDs_NFA(int i)
void Search_AltMatch_CachedNFA(int i, int n)
void FullMatchRE2(int iter, int n, const char *regexp)
void SearchAltMatch(int iters, int nbytes, SearchImpl *search)
void PossibleMatchRange_Prefix(int i)
void Parse_CachedSplit_RE2(int i)
void Search_AltMatch_DFA(int i, int n)
void Search_BigFixed_CachedNFA(int i, int n)
void SearchPhone(int iters, int nbytes, ParseImpl *search)
void Parse_CachedSplitHard_NFA(int i)
def search(target, ideal_distance, stop_event, maximum_hashes, interesting_hamming_distance=None)
static Regexp * Parse(const StringPiece &s, ParseFlags flags, RegexpStatus *status)
void Search_Success_PCRE(int i, int n)
void Search_Digits_NFA(int i)
void Parse_SplitHard_NFA(int i)
void BM_Regexp_Parse(int i)
void Parse1SplitBig1(int iters, void(*run)(int, const char *, const StringPiece &))
void Search_Medium_CachedNFA(int i, int n)
void Parse_CachedSplitHard_BitState(int i)
void BM_PCRE_Compile(int i)
void Search_Parens_CachedPCRE(int i, int n)
static bool PartialMatch(const StringPiece &text, const RE2 &re, A &&... a)
void Parse_Split_BitState(int i)
void HTTPPartialMatchRE2(int n)
SearchImpl SearchBitState
void Search_Fanout_CachedPCRE(int i, int n)
void Search_Success1_CachedDFA(int i, int n)
ParseImpl Parse1CachedBitState
void Search_Digits_RE2(int i)
void FullMatch_DotStarDollar_CachedPCRE(int i, int n)
void Search_BigFixed_CachedPCRE(int i, int n)
void Search_Success_CachedNFA(int i, int n)
void Search_Parens_CachedNFA(int i, int n)
void Search_Success1_RE2(int i, int n)
void PossibleMatchRange_Trivial(int i)
void FullMatch_DotStarDollar_CachedRE2(int i, int n)
void Search_Medium_CachedDFA(int i, int n)
void Search_Success_CachedDFA(int i, int n)
void Search_Medium_CachedRE2(int i, int n)
void Search_Success_CachedRE2(int i, int n)
void Parse_Digits_BitState(int i)
void BM_Regexp_Compile(int i)
void Parse_CachedSplit_NFA(int i)
ParseImpl Parse3Backtrack
void Parse_Digits_NFA(int i)
void Parse_SplitHard_PCRE(int i)
void Search_Success1_CachedNFA(int i, int n)
void Search_AltMatch_CachedDFA(int i, int n)
void Search_AltMatch_CachedOnePass(int i, int n)
void SetBenchmarkBytesProcessed(int64_t x)
void FullMatch_DotStarCapture_CachedRE2(int i, int n)
void FullMatch_DotStar_CachedRE2(int i, int n)
void Parse_DigitDs_OnePass(int i)
void SearchPhone_CachedRE2(int i, int n)
void Search_Hard_CachedPCRE(int i, int n)
void Search_Easy1_CachedPCRE(int i, int n)
void Parse3DigitDs(int iters, void(*parse3)(int, const char *, const StringPiece &))
void Parse_Split_PCRE(int i)
void Parse_CachedSplitBig2_PCRE(int i)
ParseImpl Parse3CachedPCRE
ParseImpl SearchParse1CachedRE2
void Parse_CachedDigitDs_RE2(int i)
void Search_Easy1_CachedDFA(int i, int n)
void Parse_CachedDigits_PCRE(int i)
void Parse_DigitDs_RE2(int i)
void RunBuild(int iters, const std::string ®exp, void(*run)(int, const std::string &))
void Parse_Digits_OnePass(int i)
void StartBenchmarkTiming()
void PossibleMatchRange_Complex(int i)
void Search_Success1_DFA(int i, int n)
void Search_Success1_CachedPCRE(int i, int n)
void Parse_Split_NFA(int i)
SearchImpl SearchCachedOnePass
BENCHMARK(Search_Digits_DFA) -> ThreadRange(1, NumCPUs())
void Search_Fanout_CachedRE2(int i, int n)
testing::MallocCounter MallocCounter
void Search_Success_CachedPCRE(int i, int n)
void Parse_CachedDigits_RE2(int i)
void CompileRE2(int iters, const std::string ®exp)
void Parse_CachedDigitDs_Backtrack(int i)
ParseImpl Parse3CachedBitState
void FindAndConsume(int iters, int nbytes)
void Search_AltMatch_OnePass(int i, int n)
static const int THIS_THREAD_ONLY
void CompilePCRE(int iters, const std::string ®exp)
void BM_Regexp_Simplify(int i)
ParseImpl Parse3CachedBacktrack
void Parse_CachedDigits_NFA(int i)
void PossibleMatchRange_NoProg(int i)
void Search_Hard_CachedNFA(int i, int n)
void HTTPPartialMatchPCRE(int n)
void Search_Easy1_CachedRE2(int i, int n)
void Parse_CachedSplitBig2_RE2(int i)
void SearchImpl(int iters, const char *regexp, const StringPiece &text, Prog::Anchor anchor, bool expect_match)
void Search_Success_DFA(int i, int n)
void EmptyPartialMatchRE2(int n)
void Search_AltMatch_PCRE(int i, int n)
void PossibleMatchRangeCommon(int iter, const char *regexp)
void Search_Digits_PCRE(int i)
void Search_Easy0_CachedNFA(int i, int n)
void SimplifyCompileRegexp(int iters, const std::string ®exp)
void Parse3Digits(int iters, void(*parse3)(int, const char *, const StringPiece &))
void Parse_CachedSplitHard_PCRE(int i)
ParseImpl Parse1CachedPCRE
void Parse1SplitBig2(int iters, void(*run)(int, const char *, const StringPiece &))
void BM_Regexp_SimplifyCompile(int i)
void Search_Medium_CachedPCRE(int i, int n)
SearchImpl SearchCachedNFA
void Search_Success1_CachedBitState(int i, int n)
void Search_Digits_DFA(int i)
void Search_Easy0_CachedPCRE(int i, int n)
void Search_AltMatch_RE2(int i, int n)
void Parse_DigitDs_Backtrack(int i)
void Parse_Digits_RE2(int i)
ParseImpl SearchParse1CachedPCRE
void Parse1SplitHard(int iters, void(*run)(int, const char *, const StringPiece &))
void Parse_CachedSplit_OnePass(int i)
void Search_Success_RE2(int i, int n)
void BM_Regexp_NullWalk(int i)
void Search_Easy0_CachedDFA(int i, int n)
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:02