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>
|
2003-01-19 John Pierce <john@killterm.org>
|
||||||
|
|
||||||
* doc/Makefile.am
|
* doc/Makefile.am
|
||||||
|
@ -891,7 +891,13 @@ QueryNew * gncQueryInvert (QueryNew *q)
|
|||||||
qt = copy_query_term(cur->data);
|
qt = copy_query_term(cur->data);
|
||||||
qt->invert = !(qt->invert);
|
qt->invert = !(qt->invert);
|
||||||
new_oterm = g_list_append(NULL, qt);
|
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;
|
break;
|
||||||
|
|
||||||
@ -963,17 +969,22 @@ QueryNew * gncQueryMerge(QueryNew *q1, QueryNew *q2, QueryOp op)
|
|||||||
retval->max_results = q1->max_results;
|
retval->max_results = q1->max_results;
|
||||||
retval->changed = 1;
|
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(i=q1->terms; i; i=i->next)
|
||||||
{
|
{
|
||||||
for(j=q2->terms; j; j=j->next)
|
for(j=q2->terms; j; j=j->next)
|
||||||
{
|
{
|
||||||
retval->terms =
|
retval->terms =
|
||||||
g_list_append(retval->terms,
|
g_list_prepend(retval->terms,
|
||||||
g_list_concat
|
g_list_concat
|
||||||
(copy_and_terms(i->data),
|
(copy_and_terms(i->data),
|
||||||
copy_and_terms(j->data)));
|
copy_and_terms(j->data)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
retval->terms = g_list_reverse(retval->terms);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case QUERY_NAND:
|
case QUERY_NAND:
|
||||||
|
Loading…
Reference in New Issue
Block a user