# # # patch "cmd_db.cc" # from [4f476ee1575947fac7f099f2988bef9756ebfae0] # to [151ac9d397ed63c3ede4e0882c31d7ff13c669d2] # ============================================================ --- cmd_db.cc 4f476ee1575947fac7f099f2988bef9756ebfae0 +++ cmd_db.cc 151ac9d397ed63c3ede4e0882c31d7ff13c669d2 @@ -14,6 +14,7 @@ #include "charset.hh" #include "cmd.hh" #include "revision.hh" +#include "roster.hh" #include "constants.hh" #include "app_state.hh" #include "database.hh" @@ -23,6 +24,7 @@ #include "work.hh" #include "rev_height.hh" #include "transforms.hh" +#include "ui.hh" using std::cin; using std::cout; @@ -30,6 +32,7 @@ using std::string; using std::pair; using std::set; using std::string; +using std::vector; CMD_GROUP(db, "db", "", CMD_REF(database), N_("Deals with the database"), @@ -444,6 +447,105 @@ CMD_HIDDEN(rev_height, "rev_height", "", P(F("cached height: %s") % height); } +// loading revisions is relatively fast + +CMD_HIDDEN(load_revisions, "load_revisions", "", CMD_REF(db), N_(""), + N_("load all revisions from the database"), + N_("This command loads all revisions from the database and is " + "intended to be used for timing revision loading performance."), + options::opts::none) +{ + database db(app); + set ids; + vector revisions; + + db.get_revision_ids(ids); + toposort(db, ids, revisions); + + P(F("loading revisions")); + ticker loaded(_("revisions"), "r", 64); + loaded.set_total(revisions.size()); + + typedef vector::const_iterator revision_iterator; + + for (revision_iterator i = revisions.begin(); i != revisions.end(); ++i) + { + revision_t revision; + db.get_revision(*i, revision); + ++loaded; + } +} + +// loading rosters is slow compared with files, revisions or certs + +CMD_HIDDEN(load_rosters, "load_rosters", "", CMD_REF(db), N_(""), + N_("load all roster versions from the database"), + N_("This command loads all roster versions from the database and is " + "intended to be used for timing roster reconstruction performance."), + options::opts::none) +{ + database db(app); + set ids; + vector rosters; + + db.get_revision_ids(ids); + toposort(db, ids, rosters); + + P(F("loading rosters")); + ticker loaded(_("rosters"), "r", 1); + loaded.set_total(rosters.size()); + typedef vector::const_iterator roster_iterator; + + for (roster_iterator i = rosters.begin(); i != rosters.end(); ++i) + { + roster_t roster; + db.get_roster(*i, roster); + ++loaded; + } +} + +// loading files is slower than revisions but faster than rosters + +CMD_HIDDEN(load_files, "load_files", "", CMD_REF(db), N_(""), + N_("load all file versions from the database"), + N_("This command loads all files versions from the database and is " + "intended to be used for timing file reconstruction performance."), + options::opts::none) +{ + database db(app); + set files; + db.get_file_ids(files); + + P(F("loading files")); + ticker loaded(_("files"), "f", 1); + loaded.set_total(files.size()); + + typedef set::const_iterator file_iterator; + + for (file_iterator i = files.begin(); i != files.end(); ++i) + { + file_data file; + db.get_file_version(*i, file); + ++loaded; + } +} + +// loading certs is fast + +CMD_HIDDEN(load_certs, "load_certs", "", CMD_REF(db), N_(""), + N_("load all certs from the database"), + N_("This command loads all certs from the database and is " + "intended to be used for timing cert loading performance."), + options::opts::none) +{ + database db(app); + vector< revision > certs; + + P(F("loading certs")); + db.get_revision_certs(certs); + P(F("loaded %d certs") % certs.size()); +} + // Local Variables: // mode: C++ // fill-column: 76