Chapter 8. Performance Tuning

Table of Contents

1. Reading and Writing Mailboxes
2. Reading Messages from Remote Folders
3. Searching and Limiting

1. Reading and Writing Mailboxes

Mutt's performance when reading mailboxes can be improved in two ways:

  1. For remote folders (IMAP and POP) as well as folders using one-file-per message storage (Maildir and MH), Mutt's performance can be greatly improved using header caching. using a single database per folder.

  2. Mutt provides the $read_inc and $write_inc variables to specify at which rate to update progress counters. If these values are too low, Mutt may spend more time on updating the progress counter than it spends on actually reading/writing folders.

    For example, when opening a maildir folder with a few thousand messages, the default value for $read_inc may be too low. It can be tuned on on a folder-basis using folder-hooks:

    # use very high $read_inc to speed up reading hcache'd maildirs
    folder-hook . 'set read_inc=1000'
    # use lower value for reading slower remote IMAP folders
    folder-hook ^imap 'set read_inc=100'
    # use even lower value for reading even slower remote POP folders
    folder-hook ^pop 'set read_inc=1r the name of a
    function, variable, or command. Example:
    

    ifdef imap_keepalive 'source ~/.mutt/imap_setup'
    

29. Removing Hooks

Usage:

unhook { * | hook-type }

This command permits you to flush hooks you have previously defined. You can either remove all hooks by giving the * character as an argument, or you can remove all hooks of a specific type by saying something like unhook send-hook.

30. Format Strings

30.1. Basic usage

Format strings are a general concept you'll find in several locations through the Mutt configuration, especially in the $index_format, $pager_format, $status_format, and other related variables. These can be very straightforward, and it's quite possible you already know how to use them.

The most basic format string element is a percent symbol followed by another character. For example, %s represents a message's Subject: header in the $index_format variable. The expandos available are documented with each format variable, but there are general modifiers available with all formatting expandos, too. Those are our concern here.

Some of the modifiers are borrowed right out of C (though you might know them from Perl, Python, shell, or another language). These are the [-]m.n modifiers, as in %-12.12s. As with such programming languages, these modifiers allow you to specify the minimum and maximum size of the resulting string, as well as its justification. If the - sign follows the percent, the string will be left-justified instead of right-justified. If there's a number immediately following that, it's the minimum amount of space the formatted string will occupy — if it's naturally smaller than that, it will be padded out with spaces. If a decimal point and another number follow, that's the maximum space allowable — the string will not be permitted to exceed that width, no matter its natural size