summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
8f738ee)
Originally committed as revision 11596 to svn://svn.ffmpeg.org/ffmpeg/trunk
optimization Tips (for libavcodec):
optimization Tips (for libavcodec):
+===================================
If you plan to do non-x86 architecture specific optimizations (SIMD normally),
then take a look in the i386/ directory, as most important functions are
already optimized for MMX.
If you plan to do non-x86 architecture specific optimizations (SIMD normally),
then take a look in the i386/ directory, as most important functions are
already optimized for MMX.
stuff in the i386 directory or find some other functions in the C source to
optimize, but there aren't many left.
stuff in the i386 directory or find some other functions in the C source to
optimize, but there aren't many left.
Understanding these overoptimized functions:
Understanding these overoptimized functions:
+--------------------------------------------
As many functions tend to be a bit difficult to understand because
of optimizations, it can be hard to optimize them further, or write
architecture-specific versions. It is recommened to look at older
As many functions tend to be a bit difficult to understand because
of optimizations, it can be hard to optimize them further, or write
architecture-specific versions. It is recommened to look at older
NOTE: If you still don't understand some function, ask at our mailing list!!!
(http://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel)
NOTE: If you still don't understand some function, ask at our mailing list!!!
(http://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel)
What speedup justifies an optimizetion?
What speedup justifies an optimizetion?
+---------------------------------------
Normaly with clean&simple optimizations and widely used codecs a overall
speedup of the affected codec of 0.1% is enough. These speedups accumulate
and can make a big difference after a while ...
Normaly with clean&simple optimizations and widely used codecs a overall
speedup of the affected codec of 0.1% is enough. These speedups accumulate
and can make a big difference after a while ...
WTF is that function good for ....:
WTF is that function good for ....:
+-----------------------------------
The primary purpose of that list is to avoid wasting time to optimize functions
which are rarely used
The primary purpose of that list is to avoid wasting time to optimize functions
which are rarely used
http://www.aggregate.org/MAGIC/
x86-specific:
http://www.aggregate.org/MAGIC/
x86-specific:
http://developer.intel.com/design/pentium4/manuals/248966.htm
The IA-32 Intel Architecture Software Developer's Manual, Volume 2:
http://developer.intel.com/design/pentium4/manuals/248966.htm
The IA-32 Intel Architecture Software Developer's Manual, Volume 2:
ARM Architecture Reference Manual (up to ARMv5TE):
http://www.arm.com/community/university/eulaarmarm.html
ARM Architecture Reference Manual (up to ARMv5TE):
http://www.arm.com/community/university/eulaarmarm.html
http://download.intel.com/design/intelxscale/27347302.pdf
PowerPC-specific:
http://download.intel.com/design/intelxscale/27347302.pdf
PowerPC-specific:
PowerPC32/AltiVec PIM:
www.freescale.com/files/32bit/doc/ref_manual/ALTIVECPEM.pdf
PowerPC32/AltiVec PIM:
www.freescale.com/files/32bit/doc/ref_manual/ALTIVECPEM.pdf
http://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/9F820A5FFA3ECE8C8725716A0062585F/$file/CBE_Handbook_v1.1_24APR2007_pub.pdf
SPARC-specific:
http://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/9F820A5FFA3ECE8C8725716A0062585F/$file/CBE_Handbook_v1.1_24APR2007_pub.pdf
SPARC-specific:
SPARC Joint Programming Specification (JPS1): Commonality
http://www.fujitsu.com/downloads/PRMPWR/JPS1-R1.0.4-Common-pub.pdf
SPARC Joint Programming Specification (JPS1): Commonality
http://www.fujitsu.com/downloads/PRMPWR/JPS1-R1.0.4-Common-pub.pdf
http://www.sun.com/processors/vis/download/vis/vis_whitepaper.pdf
GCC asm links:
http://www.sun.com/processors/vis/download/vis/vis_whitepaper.pdf
GCC asm links:
official doc but quite ugly
http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html
official doc but quite ugly
http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html