This seems like an odd way to do this. Timing the initial notmuch new seems like the goal of exactly one performance test and irrelevant to the others. What about splitting "basic" into two tests: an explicit notmuch new performance test and a separate test that does dump/restore/tag. The second test can always use a cached notmuch database (creating it if necessary). If you want to be really kind, the notmuch new performance test could save its result as the database cache if there isn't a database cache; then people don't have to build the database twice if they (or notmuch-perf-test) run the tests in the right order. On Mon, 03 Dec 2012, david@tethera.net wrote: > From: David Bremner <bremner@debian.org> > > The caching and uncaching seem to be necessarily manual, as timing the > initial notmuch new is one of our goals with this suite. > --- > performance-test/.gitignore | 1 + > performance-test/Makefile.local | 2 +- > performance-test/basic | 5 +++++ > performance-test/perf-test-lib.sh | 18 ++++++++++++++++++ > 4 files changed, 25 insertions(+), 1 deletion(-) > > diff --git a/performance-test/.gitignore b/performance-test/.gitignore > index 7e20f7c..779a115 100644 > --- a/performance-test/.gitignore > +++ b/performance-test/.gitignore > @@ -1,2 +1,3 @@ > tmp.*/ > corpus.mail.*/ > +notmuch.cache.*/ > diff --git a/performance-test/Makefile.local b/performance-test/Makefile.local > index eb713d0..b136a88 100644 > --- a/performance-test/Makefile.local > +++ b/performance-test/Makefile.local > @@ -29,4 +29,4 @@ $(TXZFILE): > download-corpus: > wget -O ${TXZFILE} ${DEFAULT_URL} > > -CLEAN := $(CLEAN) $(dir)/tmp.* $(dir)/corpus.mail.* > +CLEAN := $(CLEAN) $(dir)/tmp.* $(dir)/corpus.mail.* $(dir)/notmuch.cache.* > diff --git a/performance-test/basic b/performance-test/basic > index 9d015ee..41a7ff1 100755 > --- a/performance-test/basic > +++ b/performance-test/basic > @@ -2,11 +2,16 @@ > > . ./perf-test-lib.sh > > +uncache_database > + > add_email_corpus > > print_header > > time_run 'initial notmuch new' 'notmuch new' > + > +cache_database > + > time_run 'second notmuch new' 'notmuch new' > time_run 'dump *' 'notmuch dump > tags.out' > time_run 'restore *' 'notmuch restore < tags.out' > diff --git a/performance-test/perf-test-lib.sh b/performance-test/perf-test-lib.sh > index 9fbf874..c9b131a 100644 > --- a/performance-test/perf-test-lib.sh > +++ b/performance-test/perf-test-lib.sh > @@ -36,6 +36,8 @@ then > fi > > CORPUS_DIR=${TEST_DIRECTORY}/corpus.mail.$corpus_size > +DB_CACHE_DIR=${TEST_DIRECTORY}/notmuch.cache.$corpus_size > + > add_email_corpus () > { > rm -rf ${MAIL_DIR} > @@ -69,9 +71,25 @@ add_email_corpus () > printf "\n" > > fi > + > cp -lr $CORPUS_DIR $MAIL_DIR > + > + if [ -d $DB_CACHE_DIR ]; then > + cp -r $DB_CACHE_DIR ${MAIL_DIR}/.notmuch > + fi > } > > +cache_database () { > + if [ -d $MAIL_DIR/.notmuch ]; then > + cp -r $MAIL_DIR/.notmuch $DB_CACHE_DIR > + else > + echo "Warning: No database found to cache" > + fi > +} > + > +uncache_database () { > + rm -rf $DB_CACHE_DIR > +} > > print_header () { > printf "[v%4s] Wall(s)\tUsr(s)\tSys(s)\tRes(K)\tIn(512B)\tOut(512B)\n" \ > -- > 1.7.10.4 > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch