ffmpeg/libavcodec
Ganesh Ajjanagadde 9bc3d3355f avcodec/huffman: replace qsort with AV_QSORT
ff_huff_build_tree uses qsort underneath. AV_QSORT is substantially
faster due to the inlining of the comparison callback. Furthermore, this
code is reasonably performance critical, since in e.g the fraps codec,
ff_huff_build_tree is called on every frame. This routine is also called
in vp6 on every frame in some circumstances.

Sample benchmark (x86-64, Haswell, GNU/Linux), vp6 from FATE:
vp6 (old):
  78930 decicycles in qsort,       1 runs,      0 skips
  45330 decicycles in qsort,       2 runs,      0 skips
  27825 decicycles in qsort,       4 runs,      0 skips
  17471 decicycles in qsort,       8 runs,      0 skips
  12296 decicycles in qsort,      16 runs,      0 skips
   9554 decicycles in qsort,      32 runs,      0 skips
   8404 decicycles in qsort,      64 runs,      0 skips
   7405 decicycles in qsort,     128 runs,      0 skips
   6740 decicycles in qsort,     256 runs,      0 skips
   7540 decicycles in qsort,     512 runs,      0 skips
   9498 decicycles in qsort,    1024 runs,      0 skips
   9938 decicycles in qsort,    2048 runs,      0 skips
   8043 decicycles in qsort,    4095 runs,      1 skips

vp6 (new):
  15880 decicycles in qsort,       1 runs,      0 skips
  10730 decicycles in qsort,       2 runs,      0 skips
  10155 decicycles in qsort,       4 runs,      0 skips
   7805 decicycles in qsort,       8 runs,      0 skips
   6883 decicycles in qsort,      16 runs,      0 skips
   6305 decicycles in qsort,      32 runs,      0 skips
   5854 decicycles in qsort,      64 runs,      0 skips
   5152 decicycles in qsort,     128 runs,      0 skips
   4452 decicycles in qsort,     256 runs,      0 skips
   4161 decicycles in qsort,     511 runs,      1 skips
   4081 decicycles in qsort,    1023 runs,      1 skips
   4072 decicycles in qsort,    2047 runs,      1 skips
   4004 decicycles in qsort,    4095 runs,      1 skips

Reviewed-by: Timothy Gu <timothygu99@gmail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-10-25 10:18:00 -04:00
..
2015-08-22 06:16:31 +01:00
2015-06-14 15:09:33 +02:00
2015-10-08 23:29:18 +02:00
2015-10-10 09:52:18 +02:00
2015-10-10 09:52:18 +02:00
2015-07-22 23:23:29 +02:00
2015-08-18 10:24:01 -04:00
2015-09-10 16:36:47 +02:00
2015-04-18 14:14:24 -03:00
2015-10-13 16:03:04 +02:00
2015-05-06 17:50:09 +02:00
2015-10-11 18:03:10 -04:00
2015-09-03 13:55:38 +02:00
2015-08-18 11:48:49 -04:00
2015-10-09 22:09:08 +02:00
2015-08-11 23:16:35 +02:00
2015-07-27 16:21:14 +01:00
2015-08-21 08:46:05 +02:00
2015-08-21 08:46:05 +02:00
2015-09-16 11:38:20 +02:00
2015-10-22 10:46:03 +02:00
2015-05-20 15:50:58 +02:00
2015-10-11 17:29:50 -03:00
2015-10-22 10:46:03 +02:00
2015-06-17 20:11:43 +02:00
2015-10-11 16:39:41 +02:00
2015-08-18 10:24:01 -04:00
2015-10-11 17:29:50 -03:00
2015-10-22 20:23:44 +02:00
2015-08-18 11:48:49 -04:00
2015-09-06 14:06:44 +02:00
2015-07-22 23:23:29 +02:00
2015-08-15 15:06:01 +02:00
2015-08-18 11:48:49 -04:00
2015-10-09 22:09:08 +02:00
2015-09-07 15:32:08 +02:00
2015-08-03 10:12:10 +02:00
2015-07-27 15:24:58 +01:00