Bug#127658: Minimal PATCH for mutt slowdown
Tags: patch
I've determined with gprof that the slowdown is caused by 80% or more
of mutt's time being spent in thread.c:is_next_displayed(). The
following minimal patch improves mutt's limited threading display
speed from excruciating to merely painful.
Index: mutt-1.3.25/thread.c
--- mutt-1.3.25/thread.c.prev
+++ mutt-1.3.25/thread.c Thu Jan 3 14:51:54 2002
@@ -203,5 +203,5 @@ void mutt_linearize_tree (CONTEXT *ctx,
}
- nextdisp = 0;
+ nextdisp = -1;
do
@@ -221,5 +221,5 @@ void mutt_linearize_tree (CONTEXT *ctx,
if (tree->fake_thread)
pseudo = 1;
- if (!nextdisp)
+ if (nextdisp < 0)
nextdisp = is_next_displayed (ctx, tree);
hdr = tree->message;
@@ -234,4 +234,6 @@ void mutt_linearize_tree (CONTEXT *ctx,
tree = tree->parent;
hdr = tree->message;
+ if (nextdisp == 0)
+ nextdisp = -1;
if (hdr || !option (OPTHIDEMISSING) || tree->child->next)
@@ -248,5 +250,5 @@ void mutt_linearize_tree (CONTEXT *ctx,
if (!tree)
break;
- if (!nextdisp)
+ if (nextdisp < 0)
nextdisp = is_next_displayed (ctx, tree);
if (tree->fake_thread)
@@ -256,4 +258,7 @@ void mutt_linearize_tree (CONTEXT *ctx,
}
while (!(hdr || !option (OPTHIDEMISSING) || tree->child->next));
+
+ if (nextdisp < 0)
+ nextdisp = 0;
}
--
Chip Salzenberg - a.k.a. - <chip@pobox.com>
"It furthers one to have somewhere to go."
Reply to: