From 4f5dc0ac1e08ecc3a2c6eb0e2a8ff526de972b4f Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A1n=20Tomko?= Date: Mon, 1 Aug 2016 10:54:47 -0700 Subject: [PATCH] useless-if-before-free: skip non-matching lines early * build-aux/useless-if-before-free: First match each line with the simple/quick /\bif\b/ and reject if there is no match. This often saves the cost of the much more involved regular expression. For libvirt, this decreases the cost from 1.44s to 1.02s. --- ChangeLog | 8 ++++++++ build-aux/useless-if-before-free | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 28327f2e19..8e8ba77718 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2016-07-26 Ján Tomko + + useless-if-before-free: skip non-matching lines early + * build-aux/useless-if-before-free: First match each line with the + simple/quick /\bif\b/ and reject if there is no match. This often + saves the cost of the much more involved regular expression. + For libvirt, this decreases the cost from 1.44s to 1.02s. + 2016-07-26 Ján Tomko maint.mk: speed up sc_po_check diff --git a/build-aux/useless-if-before-free b/build-aux/useless-if-before-free index 1899b1ffd8..d7a8c0dc61 100755 --- a/build-aux/useless-if-before-free +++ b/build-aux/useless-if-before-free @@ -4,7 +4,7 @@ eval '(exit $?0)' && eval 'exec perl -wST "$0" "$@"' # Detect instances of "if (p) free (p);". # Likewise "if (p != 0)", "if (0 != p)", or with NULL; and with braces. -my $VERSION = '2016-01-12 23:13'; # UTC +my $VERSION = '2016-08-01 17:47'; # UTC # The definition above must lie within the first 8 lines in order # for the Emacs time-stamp write hook (at end) to update it. # If you change this file with Emacs, please let the write hook @@ -129,6 +129,9 @@ sub is_NULL ($) $err = EXIT_ERROR, next; while (defined (my $line = )) { + # Skip non-matching lines early to save time + $line =~ /\bif\b/ + or next; while ($line =~ /\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*([^)]+?))?\s*\) # 1 2 3 -- 2.39.5