[FFmpeg-devel] [PATCH] force dnxhd encoder to be independent of qsort internals

Reimar Döffinger Reimar.Doeffinger
Sun Sep 20 11:39:26 CEST 2009


On Sun, Sep 20, 2009 at 11:08:45AM +0200, Reimar D?ffinger wrote:
> On Sat, Sep 19, 2009 at 01:16:51PM +0200, Reimar D?ffinger wrote:
> > this change makes sure there are no equal elements in the data passed to
> > qsort, thus making sure the result is independent of implementation
> > internals.
> 
> Very slightly different, swapped the mb comparison so the original order
> is kept by default. Seems nicer and might decreases needed memory
> bandwidth if a lot of values are identical (very unlikely I think).

qsort itself is nearly 5% slower for the Linux implementation:
31596660 dezicycles in encode_fast, 1 runs, 0 skips
30286580 dezicycles in encode_fast, 2 runs, 0 skips
29324712 dezicycles in encode_fast, 4 runs, 0 skips
28957121 dezicycles in encode_fast, 8 runs, 0 skips
28722058 dezicycles in encode_fast, 16 runs, 0 skips
28665462 dezicycles in encode_fast, 32 runs, 0 skips
28597622 dezicycles in encode_fast, 64 runs, 0 skips

32579940 dezicycles in encode_fast, 1 runs, 0 skips
31456890 dezicycles in encode_fast, 2 runs, 0 skips
30567462 dezicycles in encode_fast, 4 runs, 0 skips
30156817 dezicycles in encode_fast, 8 runs, 0 skips
30013356 dezicycles in encode_fast, 16 runs, 0 skips
29935421 dezicycles in encode_fast, 32 runs, 0 skips
29924871 dezicycles in encode_fast, 64 runs, 0 skips

But difference for the whole encode_fast function is within the
variance, at most 0.2 % slower I'd say as in this case (again,
variance between different runs seems larger than the difference
between these -  and yes I did remember to disable frequency scaling).
Given that qsort only makes up < 1% of the encode_fast time
it can't really matter that much anyway.
5291082320 dezicycles in encode_fast, 1 runs, 0 skips
3888493700 dezicycles in encode_fast, 2 runs, 0 skips
3179135890 dezicycles in encode_fast, 4 runs, 0 skips
2826738915 dezicycles in encode_fast, 8 runs, 0 skips
2651430882 dezicycles in encode_fast, 16 runs, 0 skips
2562367098 dezicycles in encode_fast, 32 runs, 0 skips 
2512736576 dezicycles in encode_fast, 64 runs, 0 skips

5305639200 dezicycles in encode_fast, 1 runs, 0 skips
3899396820 dezicycles in encode_fast, 2 runs, 0 skips
3185996350 dezicycles in encode_fast, 4 runs, 0 skips
2828892240 dezicycles in encode_fast, 8 runs, 0 skips
2647687912 dezicycles in encode_fast, 16 runs, 0 skips
2557460556 dezicycles in encode_fast, 32 runs, 0 skips
2510964254 dezicycles in encode_fast, 64 runs, 0 skips

Values are for 1080i at 120MBit encoding.



More information about the ffmpeg-devel mailing list