From 8f5bf0b2ecc1d34eb7089bf743b2cf0bc5cefa5f Mon Sep 17 00:00:00 2001 From: Ulya Trofimovich Date: Mon, 17 Jun 2019 10:27:07 +0100 Subject: [PATCH] libre2c benchmark: print size of each regular expression and the number of capturing groups in it. --- lib/bench.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/bench.cc b/lib/bench.cc index 343a3c49..c9d41376 100644 --- a/lib/bench.cc +++ b/lib/bench.cc @@ -152,13 +152,23 @@ static Result bench_re2(const char *regexp, std::vector &strings } #endif +static uint32_t groupcnt(const char *r) +{ + uint32_t cnt = 0; + for (; *r; ++r) { + if (*r == '(') ++cnt; + } + return cnt; +} + static void bench(const char *r, std::vector &ss, size_t n , int mask, int need) { assert(!ss.empty()); const char *s0 = ss[0].c_str(); - fprintf(stderr, "\nr: %.*s..., s: %.*s..., n: %lu\n", 30, r, 30, s0, n); + fprintf(stderr, "\nr: %.*s..., s: %.*s..., n: %lu, %lu chars, %u groups\n" + , 30, r, 30, s0, n, strlen(r), groupcnt(r)); std::vector rs; -- 2.50.1