mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-26 11:24:53 +01:00
notmuch clon
a45ff8c361
This gives a rather decent reduction in number of seeks required when reading a Maildir that isn't in pagecache. Most filesystems give some locality on disk based on inode numbers. In ext[234] this is the inode tables, in XFS groups of sequential inode numbers are together on disk and the most significant bits indicate allocation group (i.e inode 1,000,000 is always after inode 1,000). With this patch, we read in the whole directory, sort by inode number before stat()ing the contents. Ideally, directory is sequential and then we make one scan through the file system stat()ing. Since the universe is not ideal, we'll probably seek during reading the directory and a fair bit while reading the inodes themselves. However... with readahead, and stat()ing in inode order, we should be in the best place possible to hit the cache. In a (not very good) benchmark of "how long does it take to find the first 15,000 messages in my Maildir after 'echo 3 > /proc/sys/vm/drop_caches'", this patch consistently cut at least 8 seconds off the scan time. Without patch: 50 seconds With patch: 38-42 seconds. (I did this in a previous maildir reading project and saw large improvements too) |
||
---|---|---|
lib | ||
.gitignore | ||
AUTHORS | ||
configure | ||
COPYING | ||
COPYING-GPL-3 | ||
gmime-filter-reply.c | ||
gmime-filter-reply.h | ||
INSTALL | ||
Makefile | ||
Makefile.config | ||
Makefile.local | ||
notmuch-client.h | ||
notmuch-completion.bash | ||
notmuch-config.c | ||
notmuch-dump.c | ||
notmuch-new.c | ||
notmuch-reply.c | ||
notmuch-restore.c | ||
notmuch-search.c | ||
notmuch-setup.c | ||
notmuch-show.c | ||
notmuch-tag.c | ||
notmuch-time.c | ||
notmuch.1 | ||
notmuch.c | ||
notmuch.el | ||
query-string.c | ||
README | ||
show-message.c | ||
TODO |
Notmuch - thread-based email index, search and tagging. Notmuch is a system for indexing, searching, reading, and tagging large collections of email messages. It uses the Xapian library to provide fast, full-text search of very large collection of email with a very convenient search syntax. Notmuch is free software, released under the GNU General Public License version 3 (or later). Building notmuch ---------------- See the INSTALL file for notes on compiling and installing notmuch. Contacting users and developers ------------------------------- The website for Notmuch is: http://notmuchmail.org The mailing list address for the notmuch community is: notmuch@notmuchmail.org We welcome any sort of questions, comments, kudos, or code there. Subscription is not required, (but if you do subscribe you'll avoid any delay due to moderation). See the website for subscription information. There is also an IRC channel dedicated to talk about using and developing notmuch: IRC server: irc.freenode.net Channel: #notmuch Interface options ----------------- Notmuch includes a "notmuch" command-line interface to the system. This is not a very convenient interface and it is not expected that users will find it satisfying. Instead, there are two option for obtaining a more sophisticated interface: 1. Build on top of the "notmuch" command-line interface. This might be a reasonable option for a very text-oriented client environment. For example, an emacs-based interface for notmuch is already under development and is available in the notmuch.el file in this distribution. If someone were to write a curses-based interface, or similar, it might also be reasonable to build on the "notmuch" command-line interface. 2. Build on top of the notmuch library interface. This is a better choice for developing an interface that has full control of the presentation of email threads and messages. It is expected that anyone integrating Notmuch into an existing, graphical email program use the notmuch library interface. The public interface to the notmuch library is contained in the notmuch.h header file. The "notmuch" command-line program in notmuch.c can be used as good example code, since it is a simple program that is written on top of the library interface. As can be seen, alternate interfaces to the Notmuch mail system are still in development. We would appreciate any contributions to these efforts.