Re: [PATCH 1/3] compat: add qsort_s()
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 1, 2016, 23:37 UTC
- Message-ID
- <xmqqd1hb6x0t.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <955e9bf4-d1cd-f01a-13f1-7a335dea011a@web.de>
René Scharfe <l.s.r@web.de> writes:
Show 10 quoted lines
>> You can hack around it by passing a wrapper callback that flips the >> arguments. Since we have a "void *" data pointer, that would point to a >> struct holding the "real" callback and chaining to the original data >> pointer. >> >> It does incur the cost of an extra level of indirection for each >> comparison, though (not just for each qsort call). > > Indeed. We'd need a perf test to measure that overhead before we > could determine if that's a problem, though.
I agree. Hopefully it won't be too much cost.
Show 7 quoted lines
>> You could do it as zero-cost if you were willing to turn the comparison >> function definition into a macro. > > Ugh. That either requires changing the signature of qsort_s() based > on the underlying native function as well, or using a void pointer to > pass the comparison function, no? Let's not do that, at least not > without a good reason.
Let's not go there. It may be zero runtime cost, but the cognitive cost for people who need to code the comparison callback using the macro is high.