[FFmpeg-devel] [PATCH] avcodec/bitstream: replace qsort with AV_QSORT

Ganesh Ajjanagadde gajjanag at mit.edu
Sun Oct 18 15:26:16 CEST 2015


On Sat, Oct 17, 2015 at 10:25 PM, Michael Niedermayer
<michael at niedermayer.cc> wrote:
> On Sat, Oct 17, 2015 at 09:30:01PM -0400, Ganesh Ajjanagadde wrote:
>> Commit 3a0a2f33a6c955823fa4fb12c0b49cd29a496659 claims large performance
>> advantages for AV_QSORT over libc's qsort. The reason is that I suspect
>> that libc's qsort (at least on non LTO builds, like the typical FFmpeg config)
>> can't inline the comparison callback:
>> https://stackoverflow.com/questions/5290695/is-there-any-way-a-c-c-compiler-can-inline-a-c-callback-function.
>> AV_QSORT has two things going for it:
>> 1. The guaranteed inlining of qsort itself. This yields a negligible
>> boost that may be ignored.
>> 2. The more serious possibility of potentially allowing the comparison
>> function to be inlined - this is likely responsible for the large boosts
>> reported.
>>
>> There is a comment explaining that this is a place that could use some
>> performance improvement. Thus AV_QSORT is used to achieve that.
>>
>> Benchmarks deemed unnecessary due to existing claims about AV_QSORT.
>> Tested with FATE.
>>
>> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
>> ---
>>  libavcodec/bitstream.c | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> LGTM
>
> thx

Pushed, thanks. Will create another patch to replace the remainder of
the qsort with AV_QSORT. Finally, an (optional) patch adding
inline/av_always_inline to the compare functions - otherwise (at least
on -O2, other compilers maybe) the compare functions won't be inlined.

>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> The educated differ from the uneducated as much as the living from the
> dead. -- Aristotle
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>


More information about the ffmpeg-devel mailing list