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