Revision 5e123bd3 doc/optimization.txt
doc/optimization.txt | ||
---|---|---|
1 | 1 |
optimization Tips (for libavcodec): |
2 |
=================================== |
|
2 | 3 |
|
3 | 4 |
What to optimize: |
5 |
----------------- |
|
4 | 6 |
If you plan to do non-x86 architecture specific optimizations (SIMD normally), |
5 | 7 |
then take a look in the i386/ directory, as most important functions are |
6 | 8 |
already optimized for MMX. |
... | ... | |
9 | 11 |
stuff in the i386 directory or find some other functions in the C source to |
10 | 12 |
optimize, but there aren't many left. |
11 | 13 |
|
14 |
|
|
12 | 15 |
Understanding these overoptimized functions: |
16 |
-------------------------------------------- |
|
13 | 17 |
As many functions tend to be a bit difficult to understand because |
14 | 18 |
of optimizations, it can be hard to optimize them further, or write |
15 | 19 |
architecture-specific versions. It is recommened to look at older |
... | ... | |
23 | 27 |
NOTE: If you still don't understand some function, ask at our mailing list!!! |
24 | 28 |
(http://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel) |
25 | 29 |
|
30 |
|
|
26 | 31 |
What speedup justifies an optimizetion? |
32 |
--------------------------------------- |
|
27 | 33 |
Normaly with clean&simple optimizations and widely used codecs a overall |
28 | 34 |
speedup of the affected codec of 0.1% is enough. These speedups accumulate |
29 | 35 |
and can make a big difference after a while ... |
... | ... | |
35 | 41 |
|
36 | 42 |
|
37 | 43 |
WTF is that function good for ....: |
44 |
----------------------------------- |
|
38 | 45 |
The primary purpose of that list is to avoid wasting time to optimize functions |
39 | 46 |
which are rarely used |
40 | 47 |
|
... | ... | |
145 | 152 |
|
146 | 153 |
|
147 | 154 |
Links: |
155 |
====== |
|
148 | 156 |
http://www.aggregate.org/MAGIC/ |
149 | 157 |
|
150 | 158 |
x86-specific: |
159 |
------------- |
|
151 | 160 |
http://developer.intel.com/design/pentium4/manuals/248966.htm |
152 | 161 |
|
153 | 162 |
The IA-32 Intel Architecture Software Developer's Manual, Volume 2: |
... | ... | |
161 | 170 |
|
162 | 171 |
|
163 | 172 |
ARM-specific: |
164 |
|
|
173 |
------------- |
|
165 | 174 |
ARM Architecture Reference Manual (up to ARMv5TE): |
166 | 175 |
http://www.arm.com/community/university/eulaarmarm.html |
167 | 176 |
|
... | ... | |
176 | 185 |
http://download.intel.com/design/intelxscale/27347302.pdf |
177 | 186 |
|
178 | 187 |
PowerPC-specific: |
179 |
|
|
188 |
----------------- |
|
180 | 189 |
PowerPC32/AltiVec PIM: |
181 | 190 |
www.freescale.com/files/32bit/doc/ref_manual/ALTIVECPEM.pdf |
182 | 191 |
|
... | ... | |
188 | 197 |
http://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/9F820A5FFA3ECE8C8725716A0062585F/$file/CBE_Handbook_v1.1_24APR2007_pub.pdf |
189 | 198 |
|
190 | 199 |
SPARC-specific: |
200 |
--------------- |
|
191 | 201 |
SPARC Joint Programming Specification (JPS1): Commonality |
192 | 202 |
http://www.fujitsu.com/downloads/PRMPWR/JPS1-R1.0.4-Common-pub.pdf |
193 | 203 |
|
... | ... | |
198 | 208 |
http://www.sun.com/processors/vis/download/vis/vis_whitepaper.pdf |
199 | 209 |
|
200 | 210 |
GCC asm links: |
211 |
-------------- |
|
201 | 212 |
official doc but quite ugly |
202 | 213 |
http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html |
203 | 214 |
|
Also available in: Unified diff