monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Monotone-devel] [PATCH] pre-cache database file to improve response tim


From: Joe Wilson
Subject: [Monotone-devel] [PATCH] pre-cache database file to improve response time
Date: Sat, 18 Mar 2006 14:33:00 -0800 (PST)

Here's a patch to improve the speed of many database-intensive monotone 
commands.

It can shave 70% of the time off of a (cold) checkout, for example.

Enjoy.

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
# 
# old_revision [f28f306ccd3ff2c57df9d0005876a00370af2739]
# 
# patch "database.cc"
#  from [430079748f8733f34aa2f781847a905d85983436]
#    to [e97887b34a24b8616270150b8bcdc4b120d84be9]
# 
============================================================
--- database.cc 430079748f8733f34aa2f781847a905d85983436
+++ database.cc e97887b34a24b8616270150b8bcdc4b120d84be9
@@ -2834,6 +2834,20 @@
   return !filename.empty();
 }
 
+// load database file into the operating system's disk cache to
+// improve SQLite speed.
+// NOTE: the file is NOT loaded into program memory.
+// file may take a few seconds to load the first time, but only a
+// fraction of a second to load subsequent times if already in cache.
+static void
+load_file_into_OS_cache(const string& filename)
+{
+  ifstream ifs(filename.c_str(), ios_base::in | ios_base::binary);
+  char buffer[4096];
+  while (ifs) {
+    ifs.read(buffer, sizeof(buffer));
+  }
+}
 
 void
 database::open()
@@ -2842,6 +2856,8 @@
 
   I(!__sql);
 
+  load_file_into_OS_cache(filename.as_external().c_str());
+
   error = sqlite3_open(filename.as_external().c_str(), &__sql);
 
   if (__sql)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]