File baobab-Improve-Scaning-Speed_cpu.patch of Package baobab

From 0d38eafdfae54fc477cdf4719ce1a98c20b1ed7b Mon Sep 17 00:00:00 2001
From: Khalid Abu Shawarib <khalid.shawarib@gmail.com>
Date: Fri, 11 Apr 2025 12:33:56 +0000
Subject: [PATCH 1/2] scanner: Remove unused attribute from query

This saves 6% of CPU usage and ~12% of calculation
time in my testing.
---
 src/baobab-scanner.vala | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/baobab-scanner.vala b/src/baobab-scanner.vala
index a1c1aa61..51c15d34 100644
--- a/src/baobab-scanner.vala
+++ b/src/baobab-scanner.vala
@@ -76,8 +76,7 @@ namespace Baobab {
             FileAttribute.TIME_MODIFIED + "," +
             FileAttribute.UNIX_NLINK + "," +
             FileAttribute.UNIX_INODE + "," +
-            FileAttribute.UNIX_DEVICE + "," +
-            FileAttribute.ACCESS_CAN_READ;
+            FileAttribute.UNIX_DEVICE;
 
         [Compact]
         class HardLink {
-- 
GitLab


From b5a419ffb9d0dc451b98593282ad8a91a935fc7f Mon Sep 17 00:00:00 2001
From: Khalid Abu Shawarib <kas@gnome.org>
Date: Sat, 12 Apr 2025 02:34:02 +0300
Subject: [PATCH 2/2] scanner: Call notify manually

This saves a lot of signal creation work for the very small price in
of slightly more verbose code.

Reduces scanning time by ~20%
---
 src/baobab-scanner.vala | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/baobab-scanner.vala b/src/baobab-scanner.vala
index 51c15d34..07223b65 100644
--- a/src/baobab-scanner.vala
+++ b/src/baobab-scanner.vala
@@ -159,7 +159,6 @@ namespace Baobab {
             public uint64 size { get; internal set; }
             public uint64 time_modified { get; internal set; }
             public int elements { get; internal set; }
-            public double percent { get; internal set; }
             internal int max_depth;
             internal Error? error;
             internal bool child_error;
@@ -168,6 +167,16 @@ namespace Baobab {
             public GLib.ListStore children_list_store { get; construct set; }
             public State state { get; internal set; }
 
+            double _percent;
+            public double percent {
+                get { return _percent; }
+                internal set {
+                    _percent = value;
+
+                    notify_property ("fraction");
+                }
+            }
+
             public double fraction {
                 get {
                     return _percent / 100.0;
@@ -182,7 +191,6 @@ namespace Baobab {
 
             construct {
                 children_list_store = new ListStore (typeof (Results));
-                notify["percent"].connect (() => notify_property ("fraction"));
             }
 
             public Results (FileInfo info, Results? parent_results) {
-- 
GitLab

openSUSE Build Service is sponsored by