prune_remote(): sort delete_refs_list references en masse
Inserting items into a list in sorted order is O(N^2) whereas appending them unsorted and then sorting the list all at once is O(N lg N). string_list_insert() also removes duplicates, and this change loses that functionality. But the strings in this list, which ultimately come from a for_each_ref() iteration, cannot contain duplicates. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
28d3f214d1
commit
6d6d06c901
@ -1341,8 +1341,9 @@ static int prune_remote(const char *remote, int dry_run)
|
||||
const char *refname = states.stale.items[i].util;
|
||||
|
||||
delete_refs[i] = refname;
|
||||
string_list_insert(&delete_refs_list, refname);
|
||||
string_list_append(&delete_refs_list, refname);
|
||||
}
|
||||
sort_string_list(&delete_refs_list);
|
||||
|
||||
if (!dry_run) {
|
||||
struct strbuf err = STRBUF_INIT;
|
||||
|
Loading…
Reference in New Issue
Block a user