2009-01-21 20:36:49

by Siarhei Siamashka

[permalink] [raw]
Subject: [PATCH] Use of -funroll-loops option to improve SBC encoder performance


Benchmark of a loop doing './sbcenc big_buck_bunny_480p_stereo.au > /dev/null'
is listed below. The number of iterations was different for ARM and x86, so
absolute times for x86 and ARM can't be directly compared :)

=== ARM Cortex-A8 ===


real 0m 12.51s
user 0m 11.00s
sys 0m 0.58s


real 0m 11.50s
user 0m 10.04s
sys 0m 0.54s

=== Intel Core2 ===


real 0m12.139s
user 0m11.817s
sys 0m0.300s


real 0m10.074s
user 0m9.797s
sys 0m0.256s


Overall improvement is more visible on x86, but it is still good for ARM too.
Code size increases quite noticeably, but this seems to pay off anyway.

Best regards,
Siarhei Siamashka

(No filename) (711.00 B)
0001-Use-of-funroll-loops-option-to-improve-SBC-encoder.patch (6.21 kB)
Download all attachments

2009-01-23 19:24:36

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATCH] Use of -funroll-loops option to improve SBC encoder performance

Hi Siarhei,

On Jan 21, 2009, at 22:36, Siarhei Siamashka wrote:
> Added the use of -funroll-loops gcc option for SBC. Also in
> order to gain better effect, 'sbc_pack_frame' function
> body moved to an inline function, which gets instantiated
> for 4 different subbands/channels combinations. So that
> 'frame_subbands' and 'frame_channels' arguments become compile
> time constants and can be better optimized by the compiler.

The patch has been pushed upstream. Thanks.