2009-01-21 20:36:49

by Siarhei Siamashka

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

Hello,

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 ===

before:

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

after:

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

=== Intel Core2 ===

before:

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

after:

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


Attachments:
(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.

Johan