> +     GPtrArray *ret;
> +
> +     sort_options.sort_attrs = NULL;
> +     /* tags_array isn not needed by tm_tag_compare(), but for 
> tm_search_cmp() */
> +     sort_options.tags_array = NULL;
> +     sort_options.first = TRUE;
> +
> +     foreach_ptr_array(s, i, q->names)
> +     {
> +             TMTag **ptag;
> +             sort_options.cmp_len = s->len;
> +             if (q->data_sources & TM_QUERY_SOURCE_GLOBAL_TAGS)
> +             {
> +                     tags = tm_tags_find(q->workspace->global_tags, s->str, 
> s->len, &ntags);
> +                     foreach_c_array(ptag, tags, ntags)
> +                             g_queue_insert_sorted(&res, *ptag, 
> tag_compare_ptr, &sort_options);

Sorting on insertion is bound to be slower than sorting at the end when 
building a complete set.  Sorting on insertion is good when wanting to expand 
an existing sorted set and maintain it sorted (well, so long as the number of 
insertions is sufficiently small compared to the size of the data set).  So you 
should just add, and sort like you want at the end (using `tm_tags_sort()` 
even, it's there!).
IIUC, there is no need for the list to be sorted before returning it, so 
maintaining it sorted is just a waste of resources -- plus extra code for 
`tag_compare_ptr`.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/1187/files/386006313a0b78c614bd1ac522ac121e093df58d#r75842549

Reply via email to