Index: third_party/re2/re2/testing/regexp_benchmark.cc |
diff --git a/third_party/re2/re2/testing/regexp_benchmark.cc b/third_party/re2/re2/testing/regexp_benchmark.cc |
index 6c198583014fb8ff346710126781704ef2e4e283..ca7627f5d59b17d90a691bae770cc062ed99285c 100644 |
--- a/third_party/re2/re2/testing/regexp_benchmark.cc |
+++ b/third_party/re2/re2/testing/regexp_benchmark.cc |
@@ -135,15 +135,13 @@ |
// Generate random text that won't contain the search string, |
// to test worst-case search behavior. |
void MakeText(string* text, int nbytes) { |
- srand(1); |
text->resize(nbytes); |
+ srand(0); |
for (int i = 0; i < nbytes; i++) { |
- // Generate a one-byte rune that isn't a control character (e.g. '\n'). |
- // Clipping to 0x20 introduces some bias, but we don't need uniformity. |
- int byte = rand() & 0x7F; |
- if (byte < 0x20) |
- byte = 0x20; |
- (*text)[i] = byte; |
+ if (!rand()%30) |
+ (*text)[i] = '\n'; |
+ else |
+ (*text)[i] = rand()%(0x7E + 1 - 0x20)+0x20; |
} |
} |
@@ -265,7 +263,6 @@ |
BENCHMARK_RANGE(Search_BigFixed_CachedRE2, 8, 1<<20)->ThreadRange(1, NumCPUs()); |
// Benchmark: FindAndConsume |
- |
void FindAndConsume(int iters, int nbytes) { |
StopBenchmarkTiming(); |
string s; |
@@ -287,11 +284,9 @@ |
// Benchmark: successful anchored search. |
void SearchSuccess(int iters, int nbytes, const char* regexp, SearchImpl* search) { |
- StopBenchmarkTiming(); |
string s; |
MakeText(&s, nbytes); |
BenchmarkMemoryUsage(); |
- StartBenchmarkTiming(); |
search(iters, regexp, s, Prog::kAnchored, true); |
SetBenchmarkBytesProcessed(static_cast<int64>(iters)*nbytes); |
} |
@@ -349,9 +344,11 @@ |
// Benchmark: use regexp to find phone number. |
void SearchDigits(int iters, SearchImpl* search) { |
- StringPiece s("650-253-0001"); |
+ const char *text = "650-253-0001"; |
+ int len = strlen(text); |
BenchmarkMemoryUsage(); |
- search(iters, "([0-9]+)-([0-9]+)-([0-9]+)", s, Prog::kAnchored, true); |
+ search(iters, "([0-9]+)-([0-9]+)-([0-9]+)", |
+ StringPiece(text, len), Prog::kAnchored, true); |
SetBenchmarkItemsProcessed(iters); |
} |
@@ -688,6 +685,7 @@ |
BENCHMARK(BM_Regexp_SimplifyCompile)->ThreadRange(1, NumCPUs()); |
BENCHMARK(BM_Regexp_NullWalk)->ThreadRange(1, NumCPUs()); |
BENCHMARK(BM_RE2_Compile)->ThreadRange(1, NumCPUs()); |
+ |
// Makes text of size nbytes, then calls run to search |
// the text for regexp iters times. |