After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 110259 - filter-aggregate handling is inefficient
filter-aggregate handling is inefficient
Status: RESOLVED FIXED
Product: Pan
Classification: Other
Component: general
pre-0.14.0 betas
Other All
: Normal minor
: 0.14.0
Assigned To: Charles Kerr
Pan QA Team
Depends on:
Blocks:
 
 
Reported: 2003-04-08 12:47 UTC by Charles Kerr
Modified: 2006-06-18 05:10 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Charles Kerr 2003-04-08 12:47:21 UTC
When tracking down #110256, I got this backtrace:

  • #0 ensure_articles_scored
    at score.c line 1026
  • #1 filter_score_test_articles
    at filter-score.c line 104
  • #2 filter_test_article
    at filter.c line 98
  • #3 filter_aggregate_test_article_impl
    at filter-aggregate.c line 86
  • #4 filter_aggregate_test_articles
    at filter-aggregate.c line 134
  • #5 filter_test_articles
    at filter.c line 116
  • #6 filter_remove_failures
    at filter.c line 209
  • #7 apply_filter_tests
    at articlelist.c line 1711
  • #8 set_group_worker
    at articlelist.c line 3222
  • #9 g_thread_create_proxy
    at gthread.c line 551
  • #10 pthread_start_thread_event
    from /lib/libpthread.so.0

the problem is with filter_aggregate_test_article_impl,
which tests each article in the array article-by-article.
The individual calls to the other filters may have extra
expense with them (such as the mutex locking in score.c
via filter-score.c), so it would be better if filter-aggregate
applied its children's tests in batches.
Comment 1 Charles Kerr 2003-04-08 12:55:28 UTC
stated more correctly, the problem lies with
filter_aggregate_test_articles(), which shouldn't lose its
advantage of having a batch of article by delegating work
down to filter_aggregate_test_article_impl().

filter_aggregate_test_article_impl() should be removed,
and its bits absorbed into filter_aggregate_test_articles().