mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
* src/engine/QueryNew.c -- g_list_append() can take a LONG time
and on big queries the merge can appear to take a long time. So, let's use g_list_prepend() and g_list_reverse() to speed up the process significantly. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@7860 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
6b85475af0
commit
193fd8ef83
@ -1,3 +1,10 @@
|
||||
2003-01-20 Derek Atkins <derek@ihtfp.com>
|
||||
|
||||
* src/engine/QueryNew.c -- g_list_append() can take a LONG time
|
||||
and on big queries the merge can appear to take a long time.
|
||||
So, let's use g_list_prepend() and g_list_reverse() to speed
|
||||
up the process significantly.
|
||||
|
||||
2003-01-19 John Pierce <john@killterm.org>
|
||||
|
||||
* doc/Makefile.am
|
||||
|
@ -891,7 +891,13 @@ QueryNew * gncQueryInvert (QueryNew *q)
|
||||
qt = copy_query_term(cur->data);
|
||||
qt->invert = !(qt->invert);
|
||||
new_oterm = g_list_append(NULL, qt);
|
||||
retval->terms = g_list_append(retval->terms, new_oterm);
|
||||
|
||||
/* g_list_append() can take forever, so let's do this for speed
|
||||
* in "large" queries
|
||||
*/
|
||||
retval->terms = g_list_reverse(retval->terms);
|
||||
retval->terms = g_list_prepend(retval->terms, new_oterm);
|
||||
retval->terms = g_list_reverse(retval->terms);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -963,17 +969,22 @@ QueryNew * gncQueryMerge(QueryNew *q1, QueryNew *q2, QueryOp op)
|
||||
retval->max_results = q1->max_results;
|
||||
retval->changed = 1;
|
||||
|
||||
/* g_list_append() can take forever, so let's build the list in
|
||||
* reverse and then reverse it at the end, to deal better with
|
||||
* "large" queries.
|
||||
*/
|
||||
for(i=q1->terms; i; i=i->next)
|
||||
{
|
||||
for(j=q2->terms; j; j=j->next)
|
||||
{
|
||||
retval->terms =
|
||||
g_list_append(retval->terms,
|
||||
g_list_prepend(retval->terms,
|
||||
g_list_concat
|
||||
(copy_and_terms(i->data),
|
||||
copy_and_terms(j->data)));
|
||||
}
|
||||
}
|
||||
retval->terms = g_list_reverse(retval->terms);
|
||||
break;
|
||||
|
||||
case QUERY_NAND:
|
||||
|
Loading…
Reference in New Issue
Block a user