generate some call timing info

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@4978 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Linas Vepstas 2001-07-24 02:57:13 +00:00
parent 797ee80b4d
commit bcf49d693d

View File

@ -322,15 +322,27 @@ static int ncalls = 0;
static void static void
pgendFillOutToCheckpoint (PGBackend *be, const char *query_string) pgendFillOutToCheckpoint (PGBackend *be, const char *query_string)
{ {
int call_count = ncalls;
int nact=0;
int total_txn=0, avoided_txn=0, fetched_txn=0;
GList *node, *anode, *xaction_list= NULL, *acct_list = NULL; GList *node, *anode, *xaction_list= NULL, *acct_list = NULL;
ENTER (" "); ENTER (" ");
if (!be) return; if (!be) return;
if (0 == ncalls) {
START_CLOCK (9, "starting at level 0");
}
else
{
REPORT_CLOCK (9, "call count %d", call_count);
}
ncalls ++; ncalls ++;
SEND_QUERY (be, query_string, ); SEND_QUERY (be, query_string, );
xaction_list = pgendGetResults (be, query_cb, xaction_list); xaction_list = pgendGetResults (be, query_cb, xaction_list);
if (NULL == xaction_list) return; if (NULL == xaction_list) return;
REPORT_CLOCK (9, "fetched results at call %d", call_count);
/* restore the transactions */ /* restore the transactions */
for (node=xaction_list; node; node=node->next) for (node=xaction_list; node; node=node->next)
@ -338,6 +350,7 @@ pgendFillOutToCheckpoint (PGBackend *be, const char *query_string)
Transaction *trans; Transaction *trans;
int engine_data_is_newer; int engine_data_is_newer;
GUID *trans_guid = (GUID *)node->data; GUID *trans_guid = (GUID *)node->data;
total_txn ++;
/* use markers to avoid redundant traversals of transactions we've /* use markers to avoid redundant traversals of transactions we've
* already checked recently. */ * already checked recently. */
@ -351,6 +364,7 @@ pgendFillOutToCheckpoint (PGBackend *be, const char *query_string)
} }
else else
{ {
avoided_txn ++;
PINFO ("avoided scan"); PINFO ("avoided scan");
engine_data_is_newer = 1; engine_data_is_newer = 1;
} }
@ -362,6 +376,7 @@ pgendFillOutToCheckpoint (PGBackend *be, const char *query_string)
{ {
GList *split_list, *snode; GList *split_list, *snode;
Timespec ts; Timespec ts;
fetched_txn ++;
ts = xaccTransRetDatePostedTS (trans); ts = xaccTransRetDatePostedTS (trans);
@ -405,6 +420,9 @@ pgendFillOutToCheckpoint (PGBackend *be, const char *query_string)
} }
g_list_free(xaction_list); g_list_free(xaction_list);
PINFO ("Clocked total txn=%d avoided=%d fetched=%d",
total_txn, avoided_txn, fetched_txn);
REPORT_CLOCK (9, "done gathering at call %d", call_count);
if (NULL == acct_list) return; if (NULL == acct_list) return;
/* OK, at this point, we have a list of accounts, including the /* OK, at this point, we have a list of accounts, including the
@ -412,6 +430,7 @@ pgendFillOutToCheckpoint (PGBackend *be, const char *query_string)
* do two queries: first, get the running balances to that point, * do two queries: first, get the running balances to that point,
* and then all of the splits from that date onwards. * and then all of the splits from that date onwards.
*/ */
nact = 0;
for (anode = acct_list; anode; anode = anode->next) for (anode = acct_list; anode; anode = anode->next)
{ {
char *p; char *p;
@ -430,11 +449,13 @@ pgendFillOutToCheckpoint (PGBackend *be, const char *query_string)
p = stpcpy (p, "';"); p = stpcpy (p, "';");
pgendFillOutToCheckpoint (be, be->buff); pgendFillOutToCheckpoint (be, be->buff);
g_free (ae); g_free (ae);
nact ++;
} }
g_list_free(acct_list); g_list_free(acct_list);
REPORT_CLOCK (9, "done w/ fillout at call %d, handled %d accounts", call_count, nact);
LEAVE (" "); LEAVE (" ");
} }