[Github-comments] [geany/geany] New tagmanager query module (#1187)

Colomban Wendling notifications at xxxxx
Tue Aug 23 10:49:50 UTC 2016


> +	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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.geany.org/pipermail/github-comments/attachments/20160823/6f50124a/attachment.html>


More information about the Github-comments mailing list