public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
From: Dodji Seketeli <dodji@redhat.com>
To: Dodji Seketeli <dodji@redhat.com>
Cc: libabigail@sourceware.org, ckalina@redhat.com
Subject: [PATCH 13/13] comp-filter: Speed up harmless/harmful categorization
Date: Thu, 02 Mar 2023 20:05:23 +0100	[thread overview]
Message-ID: <87cz5rotxo.fsf_-_@redhat.com> (raw)
In-Reply-To: <87356nrnmq.fsf@redhat.com> (Dodji Seketeli's message of "Thu, 02 Mar 2023 19:53:17 +0100")

Hello,

Categorizing a diff graph with a thousands of function diff nodes takes a
lot of time.  At that point, categorizing each node has
harmful/harmless is showing up in the profile, particularly because
has_var_type_cv_qual_change and to a lesser extend
class_diff_has_harmless_odr_violation_change perform some structural
comparison still, oops.  This patch avoids doing that.  On my machine,
the categorizing of each node goes from around 130ms to 92 ms.

	* src/abg-comp-filter.cc
	(class_diff_has_harmless_odr_violation_change)
	(has_var_type_cv_qual_change): Avoid doing structural comparison
	here.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
---
 src/abg-comp-filter.cc | 25 ++++++-------------------
 1 file changed, 6 insertions(+), 19 deletions(-)

diff --git a/src/abg-comp-filter.cc b/src/abg-comp-filter.cc
index 5300d07c..f1d67de5 100644
--- a/src/abg-comp-filter.cc
+++ b/src/abg-comp-filter.cc
@@ -775,14 +775,10 @@ class_diff_has_harmless_odr_violation_change(const diff* dif)
   class_decl_sptr first = d->first_class_decl();
   class_decl_sptr second = d->second_class_decl();
 
-  if (equals(*first, *second, 0))
-    {
-      class_decl_sptr fc = is_class_type(first->get_canonical_type());
-      class_decl_sptr sc = is_class_type(second->get_canonical_type());
-
-      if (!equals(*fc, *sc, 0))
-	return true;
-    }
+  if (first->get_qualified_name() == second->get_qualified_name()
+      && first != second
+      && first->get_corpus() == second->get_corpus())
+    return true;
 
   return false;
 }
@@ -1643,18 +1639,9 @@ has_var_type_cv_qual_change(const diff* dif)
   if (!var_dif)
     return false;
 
-  {
-    // Make sure the variable diff does carry a type change at least
-    change_kind ch_kind = NO_CHANGE_KIND;
-    if (equals(*var_dif->first_var(), *var_dif->second_var(), &ch_kind))
-      return false;
-
-    if (!(ch_kind & LOCAL_TYPE_CHANGE_KIND || ch_kind & SUBTYPE_CHANGE_KIND))
-      return false;
-  }
-
   diff *type_dif = var_dif->type_diff().get();
-  ABG_ASSERT(type_dif);
+  if (!type_dif)
+    return false;
 
   return type_diff_has_cv_qual_change_only(type_dif);
 }
-- 
2.39.2

-- 
		Dodji


      parent reply	other threads:[~2023-03-02 19:05 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <877cvzrnws.fsf@redhat.com>
2023-03-02 18:53 ` [PATCH 00/13] Support negative suppression specifications Dodji Seketeli
2023-03-02 18:55   ` [PATCH 01/13] ini: Fix parsing list property values Dodji Seketeli
2023-03-02 18:56   ` [PATCH 02/13] suppr: Support has_data_member and has_data_member_regexp properties Dodji Seketeli
2023-03-02 18:57   ` [PATCH 03/13] suppression: Factorize out is_data_member_offset_in_range Dodji Seketeli
2023-03-02 18:58   ` [PATCH 04/13] suppression: Support the has_size_change property for suppress_type Dodji Seketeli
2023-03-02 18:59   ` [PATCH 05/13] suppression: Support offset_of_{first,last}_data_member_regexp offset selectors Dodji Seketeli
2023-03-02 18:59   ` [PATCH 06/13] comparison, suppression: Support [allow_type] directive Dodji Seketeli
2023-03-02 19:00   ` [PATCH 07/13] Misc white space fixes Dodji Seketeli
2023-03-02 19:01   ` [PATCH 08/13] abidiff: Add extensive logging Dodji Seketeli
2023-03-02 19:01   ` [PATCH 09/13] tools-utils: Support kernel stablelist Dodji Seketeli
2023-03-02 19:02   ` [PATCH 10/13] comp-filter: Don't re-visit node while applying filters to diff nodes Dodji Seketeli
2023-03-02 19:03   ` [PATCH 11/13] comparison: Add a mode to not apply filters on interface sub-graphs Dodji Seketeli
2023-03-02 19:04   ` [PATCH 12/13] comparison: When marking leaf nodes don't do unnecessary impact analysis Dodji Seketeli
2023-03-02 19:05   ` Dodji Seketeli [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87cz5rotxo.fsf_-_@redhat.com \
    --to=dodji@redhat.com \
    --cc=ckalina@redhat.com \
    --cc=libabigail@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).