[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Monotone-devel] [PATCH 1/2] git_export: avoid multiple sql queries
From: |
Felipe Contreras |
Subject: |
[Monotone-devel] [PATCH 1/2] git_export: avoid multiple sql queries |
Date: |
Sun, 8 Mar 2009 07:31:41 +0200 |
This improves performance while exporting. In my system I see an
improvement from 52 minutes to 6 seconds.
Signed-off-by: Felipe Contreras <address@hidden>
---
Obviously this applies on to of the fast-export branch.
git_export.cc | 24 ++++++++++++++++++------
1 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/git_export.cc b/git_export.cc
index fc92b3b..803caa4 100644
--- a/git_export.cc
+++ b/git_export.cc
@@ -215,6 +215,7 @@ export_changes(database & db,
typedef cert_vector::const_iterator cert_iterator;
typedef map<string, string>::const_iterator lookup_iterator;
+ cert_vector certs;
cert_vector authors;
cert_vector branches;
cert_vector changelogs;
@@ -222,12 +223,23 @@ export_changes(database & db,
cert_vector dates;
cert_vector tags;
- db.get_revision_certs(*r, author_cert_name, authors);
- db.get_revision_certs(*r, branch_cert_name, branches);
- db.get_revision_certs(*r, changelog_cert_name, changelogs);
- db.get_revision_certs(*r, comment_cert_name, comments);
- db.get_revision_certs(*r, date_cert_name, dates);
- db.get_revision_certs(*r, tag_cert_name, tags);
+ db.get_revision_certs(*r, certs);
+
+ for (cert_iterator i = certs.begin(); i != certs.end(); i++)
+ {
+ if (i->inner().name == author_cert_name)
+ authors.push_back(*i);
+ else if (i->inner().name == date_cert_name)
+ dates.push_back(*i);
+ else if (i->inner().name == changelog_cert_name)
+ changelogs.push_back(*i);
+ else if (i->inner().name == branch_cert_name)
+ branches.push_back(*i);
+ else if (i->inner().name == tag_cert_name)
+ tags.push_back(*i);
+ else if (i->inner().name == comment_cert_name)
+ comments.push_back(*i);
+ }
// default to <unknown> committer and author if no author certs exist
// this may be mapped to a different value with the authors-file option
--
1.6.2