]> granicus.if.org Git - re2c/commitdiff
libre2c benchmark: print size of each regular expression and the number of capturing...
authorUlya Trofimovich <skvadrik@gmail.com>
Mon, 17 Jun 2019 09:27:07 +0000 (10:27 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Mon, 17 Jun 2019 09:27:07 +0000 (10:27 +0100)
lib/bench.cc

index 343a3c49dc9d102ba94e7b83223ae6cfdbc8c257..c9d41376f525a21aa2895d9bb603408be93717e0 100644 (file)
@@ -152,13 +152,23 @@ static Result bench_re2(const char *regexp, std::vector<std::string> &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<std::string> &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<Result> rs;