Kirill Smelkov
13908f330f
[media] vivi: Move computations out of vivi_fillbuf linecopy loop
...
The "dev->mvcount % wmax" thing was showing high in profiles (we do it
for each line which ~ 500 per frame)
? 000010c0 <vivi_fillbuff>:
...
0,39 ? 70:???mov 0x3ff4(%edi),%esi
0,22 ? 76:? mov 0x2a0(%edi),%eax
0,30 ? ? mov -0x84(%ebp),%ebx
0,35 ? ? mov %eax,%edx
0,04 ? ? mov -0x7c(%ebp),%ecx
0,35 ? ? sar $0x1f,%edx
0,44 ? ? idivl -0x7c(%ebp)
21,68 ? ? imul %esi,%ecx
0,70 ? ? imul %esi,%ebx
0,52 ? ? add -0x88(%ebp),%ebx
1,65 ? ? mov %ebx,%eax
0,22 ? ? imul %edx,%esi
0,04 ? ? lea 0x3f4(%edi,%esi,1),%edx
2,18 ? ?? call vivi_fillbuff+0xa6
0,74 ? ? addl $0x1,-0x80(%ebp)
62,69 ? ? mov -0x7c(%ebp),%edx
1,18 ? ? mov -0x80(%ebp),%ecx
0,35 ? ? add %edx,-0x84(%ebp)
0,61 ? ? cmp %ecx,-0x8c(%ebp)
0,22 ? ???jne 70
so since all variables stay the same for all iterations let's move
computations out of the loop: the abovementioned division and
"width*pixelsize" too
before:
# cmdline : /home/kirr/local/perf/bin/perf record -g -a sleep 20
#
# Samples: 49K of event 'cycles'
# Event count (approx.): 16475832370
#
# Overhead Command Shared Object
# ........ ............... ......................
#
29.07% rawv libc-2.13.so [.] __memcpy_ssse3
20.57% vivi-* [kernel.kallsyms] [k] memcpy
10.20% Xorg [unknown] [.] 0xa7301494
5.16% vivi-* [vivi] [k] gen_text.constprop.6
4.43% rawv [vivi] [k] gen_twopix
4.36% vivi-* [vivi] [k] vivi_fillbuff
2.42% rawv [vivi] [k] precalculate_line
1.33% swapper [kernel.kallsyms] [k] read_hpet
after:
# cmdline : /home/kirr/local/perf/bin/perf record -g -a sleep 20
#
# Samples: 46K of event 'cycles'
# Event count (approx.): 15574200568
#
# Overhead Command Shared Object
# ........ ............... ....................
#
27.99% rawv libc-2.13.so [.] __memcpy_ssse3
23.29% vivi-* [kernel.kallsyms] [k] memcpy
10.30% Xorg [unknown] [.] 0xa75c98f8
5.34% vivi-* [vivi] [k] gen_text.constprop.6
4.61% rawv [vivi] [k] gen_twopix
2.64% rawv [vivi] [k] precalculate_line
1.37% swapper [kernel.kallsyms] [k] read_hpet
0.79% Xorg [kernel.kallsyms] [k] read_hpet
0.64% Xorg [kernel.kallsyms] [k] unix_poll
0.45% Xorg [kernel.kallsyms] [k] fget_light
0.43% rawv libxcb.so.1.1.0 [.] 0x0000aae9
0.40% runsv [kernel.kallsyms] [k] ext2_try_to_allocate
0.36% Xorg [kernel.kallsyms] [k] _raw_spin_lock_irqsave
0.31% vivi-* [vivi] [k] vivi_fillbuff
(i.e. vivi_fillbuff own overhead is almost gone)
Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru >
Acked-by: Hans Verkuil <hans.verkuil@cisco.com >
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com >
2012-12-21 18:25:43 -02:00
..
2012-11-03 09:52:54 +08:00
2012-11-22 09:14:54 -10:00
2012-11-28 11:38:11 -05:00
2012-11-28 07:22:38 -02:00
2012-10-15 14:45:51 -04:00
2012-11-23 14:32:55 +01:00
2012-11-09 16:45:37 +01:00
2012-11-07 09:35:53 -08:00
2012-12-03 10:53:25 -08:00
2012-11-12 10:20:23 -08:00
2012-10-31 21:02:57 +01:00
2012-10-08 22:52:54 -04:00
2012-11-22 03:36:15 +00:00
2012-10-26 14:59:01 -07:00
2012-12-03 11:16:37 -08:00
2012-10-23 16:32:18 +09:00
2012-11-13 22:45:42 -08:00
2012-10-19 14:07:47 -07:00
2012-11-17 22:22:24 +01:00
2012-11-28 16:51:10 +10:00
2012-11-28 07:22:38 -02:00
2012-10-24 15:46:27 -07:00
2012-11-05 21:54:40 +01:00
2012-11-23 11:59:26 -10:00
2012-10-06 03:04:41 +09:00
2012-10-19 19:44:06 +01:00
2012-10-23 09:03:49 -07:00
2012-11-22 21:45:34 -10:00
2012-11-17 13:27:15 +01:00
2012-11-06 07:37:10 -08:00
2012-11-07 18:59:26 -05:00
2012-11-11 12:09:43 -08:00
2012-10-07 21:04:56 +09:00
2012-10-06 03:16:12 +09:00
2012-12-02 16:24:31 -08:00
2012-12-21 18:25:43 -02:00
2012-11-21 17:46:41 +01:00
2012-10-10 20:15:24 +09:00
2012-11-07 15:40:52 -05:00
2012-11-30 08:51:17 -08:00
2012-12-02 16:39:00 -08:00
2012-11-20 00:09:26 +01:00
2012-10-17 15:53:03 -05:00
2012-10-09 16:22:18 +09:00
2012-10-09 16:11:46 +09:00
2012-11-05 16:59:59 -07:00
2012-10-19 15:40:18 -07:00
2012-11-15 11:58:24 +01:00
2012-10-09 01:47:35 -04:00
2012-10-13 11:27:59 +09:00
2012-10-06 03:04:56 +09:00
2012-10-10 20:15:24 +09:00
2012-11-16 14:33:04 -08:00
2012-11-15 11:16:02 +09:00
2012-11-29 10:05:09 +02:00
2012-10-07 21:04:56 +09:00
2012-11-30 08:51:18 -08:00
2012-11-16 14:10:15 -08:00
2012-11-13 22:45:42 -08:00
2012-10-15 14:08:48 +09:00
2012-10-28 11:13:54 -07:00
2012-12-21 18:25:16 -02:00
2012-11-17 13:35:44 -08:00
2012-11-03 09:52:55 +08:00
2012-11-21 16:45:32 -08:00
2012-10-09 16:22:19 +09:00
2012-11-22 09:14:54 -10:00
2012-10-10 09:10:32 -06:00
2012-11-28 11:27:01 -05:00
2012-11-23 12:01:02 -10:00
2012-11-09 14:54:24 +10:30
2012-10-07 21:06:10 +09:00
2012-11-20 18:52:01 -10:00
2012-10-16 18:07:12 -07:00