Ganesh Ajjanagadde
7910a2c269
avfilter/vf_deshake: replace qsort with AV_QSORT
qsort is called indirectly in filter_frame, suggesting its performance
criticality. AV_QSORT is substantially faster due to the inlining of the
comparison callback. Thus, the increase in performance should be worth
the increase in binary size.
This optimization is just a low hanging fruit. The trac ticket 1430 is
a request for an improved deshake filter.
Sample benchmark (x86-64, Haswell, GNU/Linux):
File: original from https://trac.ffmpeg.org/ticket/1430
command: ffmpeg -stream_loop 8 -i file.webm -vf deshake=rx=64:ry=64 -f null -
Timer truncated at 1024 runs.
new:
28260 decicycles in qsort, 1 runs, 0 skips
35570 decicycles in qsort, 2 runs, 0 skips
39010 decicycles in qsort, 4 runs, 0 skips
46897 decicycles in qsort, 8 runs, 0 skips
40442 decicycles in qsort, 16 runs, 0 skips
41611 decicycles in qsort, 32 runs, 0 skips
40345 decicycles in qsort, 64 runs, 0 skips
38967 decicycles in qsort, 128 runs, 0 skips
38647 decicycles in qsort, 256 runs, 0 skips
40238 decicycles in qsort, 512 runs, 0 skips
39676 decicycles in qsort, 1024 runs, 0 skips
old:
1740280 decicycles in qsort, 1 runs, 0 skips
923560 decicycles in qsort, 2 runs, 0 skips
511330 decicycles in qsort, 4 runs, 0 skips
309720 decicycles in qsort, 8 runs, 0 skips
194900 decicycles in qsort, 16 runs, 0 skips
142686 decicycles in qsort, 32 runs, 0 skips
112516 decicycles in qsort, 64 runs, 0 skips
98166 decicycles in qsort, 128 runs, 0 skips
88147 decicycles in qsort, 256 runs, 0 skips
88706 decicycles in qsort, 512 runs, 0 skips
86783 decicycles in qsort, 1024 runs, 0 skips
Reviewed-by: Nicolas George <george@nsup.org>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-10-31 10:25:00 -04:00
..
2015-10-27 01:49:22 -03:00
2015-10-14 10:04:01 -04:00
2015-09-12 01:43:06 +00:00
2015-09-12 01:43:06 +00:00
2015-10-08 23:09:25 +02:00
2015-10-14 10:04:01 -04:00
2015-10-14 10:04:01 -04:00
2015-09-12 13:29:20 +00:00
2015-10-14 10:04:01 -04:00
2015-10-14 10:04:01 -04:00
2013-10-29 11:58:11 +01:00
2015-08-29 16:38:38 +00:00
2015-09-12 01:43:06 +00:00
2015-10-14 10:04:01 -04:00
2015-09-20 19:02:33 +02:00
2015-10-24 10:18:55 -04:00
2015-05-20 19:14:11 +02:00
2015-10-13 09:34:39 +02:00
2015-10-14 10:04:01 -04:00
2015-09-08 23:09:59 +02:00
2015-09-20 19:02:33 +02:00
2015-09-12 18:24:49 +02:00
2015-07-02 15:36:00 +00:00
2015-10-14 10:04:01 -04:00
2015-10-14 10:04:01 -04:00
2015-09-12 01:43:06 +00:00
2015-09-20 19:02:33 +02:00
2015-09-12 01:43:06 +00:00
2015-09-20 19:02:33 +02:00
2015-10-14 10:04:01 -04:00
2015-10-14 10:04:01 -04:00
2015-10-18 21:27:00 +02:00
2015-10-14 10:04:01 -04:00
2015-10-18 02:01:44 +02:00
2015-10-14 10:04:01 -04:00
2015-10-14 10:04:01 -04:00
2015-10-14 10:04:01 -04:00
2015-10-02 10:37:44 +02:00
2015-10-14 10:04:01 -04:00
2015-04-08 13:05:06 +00:00
2015-09-20 19:02:33 +02:00
2015-10-22 16:13:26 -04:00
2015-10-14 10:04:01 -04:00
2015-10-29 18:16:09 +01:00
2015-10-26 20:56:17 +01:00
2015-10-29 18:46:00 -04:00
2015-03-02 04:08:22 +01:00
2015-04-08 13:05:06 +00:00
2015-10-26 20:56:17 +01:00
2013-10-29 11:58:11 +01:00
2015-10-14 10:04:01 -04:00
2015-10-14 10:04:01 -04:00
2015-10-29 17:43:13 +01:00
2015-09-05 16:22:03 +02:00
2015-08-08 21:58:48 +02:00
2015-10-14 10:04:01 -04:00
2015-10-22 16:13:26 -04:00
2015-10-14 10:04:01 -04:00
2015-10-31 00:29:51 +01:00
2015-10-28 03:26:08 +01:00
2015-10-22 16:13:26 -04:00
2015-10-29 18:55:10 -04:00
2015-10-29 19:10:49 -04:00
2015-10-14 10:04:01 -04:00
2015-10-26 23:24:18 -07:00
2015-09-20 19:02:33 +02:00
2015-10-16 21:58:50 -04:00
2013-12-05 23:42:07 +01:00
2015-10-03 21:59:24 +02:00
2014-06-04 18:41:04 +02:00
2015-10-14 10:04:01 -04:00
2015-09-05 16:22:03 +02:00
2015-10-14 10:04:01 -04:00
2015-10-11 14:30:47 -04:00
2013-12-19 13:31:31 +01:00
2014-08-12 03:49:45 +02:00
2013-12-19 13:31:31 +01:00
2014-09-18 00:48:15 +02:00
2015-10-26 23:24:30 -07:00
2015-10-25 20:58:21 +01:00
2015-08-26 11:12:23 +00:00
2015-08-26 11:12:23 +00:00
2015-10-14 10:04:01 -04:00
2015-10-22 16:13:26 -04:00
2015-09-20 19:02:33 +02:00
2015-09-10 21:06:58 +00:00
2015-09-20 19:02:33 +02:00
2015-10-07 19:05:13 +02:00
2015-09-15 13:21:57 -04:00
2013-10-29 11:58:11 +01:00
2014-04-19 18:20:17 +02:00
2015-04-19 23:45:35 +01:00
2015-10-14 10:04:01 -04:00
2015-10-14 10:19:26 -04:00
2015-09-20 19:02:33 +02:00
2015-08-26 11:12:23 +00:00
2015-09-24 17:26:27 +02:00
2015-02-06 19:07:29 +01:00
2013-10-23 12:14:49 +02:00
2015-08-08 21:59:21 +02:00
2015-09-13 17:34:45 +02:00
2015-09-22 23:45:03 +02:00
2014-11-15 02:39:49 +01:00
2015-10-17 18:58:38 -04:00
2015-10-27 14:35:30 +01:00
2013-10-19 16:42:57 +02:00
2014-08-10 04:51:19 +02:00
2014-08-13 01:00:38 +02:00
2013-10-07 13:28:13 +02:00
2015-10-30 22:45:46 +01:00
2015-10-02 17:40:57 +02:00
2015-07-14 17:57:14 +02:00
2014-04-22 02:40:20 +02:00
2015-07-14 23:50:50 +00:00
2015-04-20 03:19:47 +02:00
2014-04-19 18:20:17 +02:00
2015-01-06 10:02:11 +00:00
2015-10-27 14:35:30 +01:00
2015-07-14 05:07:07 +02:00
2015-10-06 21:01:24 +02:00
2013-09-28 11:02:01 +02:00
2015-10-03 15:22:16 +02:00
2015-01-05 01:45:49 +01:00
2015-09-20 19:02:33 +02:00
2015-02-11 13:51:58 +01:00
2015-02-11 13:51:58 +01:00
2015-02-11 13:51:58 +01:00
2015-10-28 02:30:03 +01:00
2015-10-14 10:04:01 -04:00
2015-08-18 22:22:49 -04:00
2015-09-29 20:50:20 +02:00
2015-04-08 13:05:06 +00:00
2015-04-08 13:05:06 +00:00
2015-04-08 13:05:06 +00:00
2015-10-22 16:13:26 -04:00
2015-10-14 10:04:01 -04:00
2015-10-17 07:43:23 -07:00
2015-06-07 20:18:15 +02:00
2015-03-16 23:43:12 +01:00
2015-04-08 13:05:06 +00:00
2015-09-18 14:52:19 +02:00
2015-09-08 17:10:48 +02:00
2015-09-02 16:35:21 +02:00
2014-02-24 10:47:47 +01:00
2015-07-02 15:36:00 +00:00
2015-10-14 10:04:01 -04:00
2015-09-08 17:10:48 +02:00
2015-03-16 23:43:12 +01:00
2015-10-22 16:13:26 -04:00
2015-09-08 22:39:24 +02:00
2015-09-20 19:02:33 +02:00
2015-08-28 19:05:19 +00:00
2015-10-08 11:27:57 +02:00
2015-10-31 10:25:00 -04:00
2015-10-14 10:04:01 -04:00
2015-10-14 10:04:01 -04:00
2015-03-16 23:43:12 +01:00
2015-10-24 20:38:07 -04:00
2015-03-16 23:43:12 +01:00
2015-10-14 10:04:01 -04:00
2015-07-16 18:50:24 +02:00
2015-03-20 09:41:32 +01:00
2015-10-14 10:04:01 -04:00
2015-09-09 00:06:15 +02:00
2015-05-12 20:08:18 +02:00
2015-03-17 16:52:10 +01:00
2015-09-20 19:02:33 +02:00
2015-10-14 10:04:01 -04:00
2015-07-02 15:36:00 +00:00
2015-04-08 13:05:06 +00:00
2015-10-07 19:05:13 +02:00
2015-09-29 15:44:14 +02:00
2015-10-22 16:13:26 -04:00
2015-09-20 19:02:33 +02:00
2015-10-14 10:04:01 -04:00
2015-09-09 00:11:05 +02:00
2014-12-26 15:39:51 -03:00
2015-06-13 20:51:43 +02:00
2015-03-16 23:43:12 +01:00
2015-10-14 10:04:01 -04:00
2015-08-18 10:24:01 -04:00
2015-10-14 10:04:01 -04:00
2015-10-22 16:13:26 -04:00
2014-04-19 18:20:17 +02:00
2015-09-18 22:42:38 +02:00
2015-03-16 23:43:12 +01:00
2015-09-20 19:02:33 +02:00
2015-01-06 01:21:19 +01:00
2015-10-14 10:04:01 -04:00
2015-09-20 19:02:33 +02:00
2015-09-09 00:21:57 +02:00
2015-03-16 23:43:12 +01:00
2015-05-02 15:13:30 +02:00
2015-09-09 00:30:53 +02:00
2015-10-30 03:55:12 +01:00
2015-10-14 10:04:01 -04:00
2015-10-27 14:35:30 +01:00
2015-10-14 10:04:01 -04:00
2015-07-02 15:36:00 +00:00
2015-10-14 10:04:01 -04:00
2015-10-14 10:04:01 -04:00
2014-10-17 00:44:35 -03:00
2013-10-29 11:58:11 +01:00
2015-09-12 02:14:44 +00:00
2015-10-14 10:04:01 -04:00
2015-06-07 20:18:15 +02:00
2015-05-05 16:27:24 +02:00
2015-10-14 10:04:01 -04:00
2015-10-14 10:04:01 -04:00
2015-04-08 13:05:06 +00:00
2015-04-08 13:05:06 +00:00
2014-04-19 18:20:17 +02:00
2015-04-08 13:05:06 +00:00
2015-01-09 17:26:31 +01:00
2015-04-08 13:05:06 +00:00
2015-10-29 18:53:11 -04:00
2015-09-20 19:02:33 +02:00
2014-06-25 18:22:31 +02:00
2015-04-21 22:54:13 +02:00
2015-09-20 19:02:33 +02:00
2015-10-26 07:14:22 -04:00
2015-04-08 13:05:06 +00:00
2015-04-08 13:05:06 +00:00
2015-09-08 23:04:13 +02:00
2015-09-03 09:47:44 +00:00
2015-10-14 10:04:01 -04:00
2015-10-17 15:01:57 +02:00
2015-08-30 15:58:12 +00:00
2015-03-22 17:30:24 +01:00
2015-03-04 21:43:42 +01:00
2015-10-14 10:04:01 -04:00
2015-10-23 11:49:01 +02:00
2015-07-02 15:36:00 +00:00
2015-04-08 13:05:06 +00:00
2015-07-15 13:34:56 +00:00
2015-09-09 00:43:06 +02:00
2014-12-21 01:48:19 +01:00
2015-10-29 19:02:05 -04:00
2015-10-14 10:04:01 -04:00
2015-10-06 21:01:24 +02:00
2015-10-27 14:35:30 +01:00
2015-09-08 18:47:06 +00:00
2015-10-14 10:04:01 -04:00
2015-10-14 10:04:01 -04:00
2015-10-07 19:05:13 +02:00
2015-09-20 19:02:33 +02:00
2015-10-03 15:22:16 +02:00
2015-10-14 10:04:01 -04:00
2015-09-09 00:47:04 +02:00
2015-09-09 00:48:03 +02:00
2015-10-14 10:04:01 -04:00
2014-04-19 18:20:17 +02:00
2015-09-15 11:12:49 -04:00
2015-09-09 00:59:43 +02:00
2015-09-09 01:02:07 +02:00
2015-10-10 17:33:43 +02:00
2015-09-09 01:04:28 +02:00
2015-09-18 22:42:38 +02:00
2015-10-07 19:05:13 +02:00
2015-06-12 17:15:20 +00:00
2015-10-22 10:44:30 -08:00
2015-09-05 16:22:03 +02:00
2014-08-22 22:18:46 +02:00
2014-08-22 22:19:20 +02:00
2013-10-29 11:58:11 +01:00
2015-09-15 18:34:44 +00:00
2015-10-14 10:04:01 -04:00
2015-10-02 01:21:36 +02:00
2015-04-08 13:05:06 +00:00
2015-08-29 14:57:52 +02:00
2015-10-10 17:33:43 +02:00
2015-04-05 15:46:11 +02:00