http://ffmpeg.blogbus.com/《上xvid 代码的几个小bug -[视频研究]》一文提到的问题:
1. idct.c中void idct_int32(short *const block)函数
定义了几个中间变量 X0,X1,X2,X3,X4,X5...X8
变量类型使用了 static long
结果虽然不会出错,但是影响性能,因为static 变量在退出函数后还需要保留该变量的值,增加了运算量,而非static变量,则可以通过编译
器优化,能使该变量为寄存器变量,减少内存访问的时间。本人测试了2000帧QVGA(320x240)图像,其中static变量的idct耗时8.6s,而非
static的只要5.3s,可见对效率影响挺大。
------------------------------------
对于static局部变量影响性能的问题,以前没有太多关注。
一般而言,局部变量设置为static,主要应该用于保存跨过程调用的状态。基于上面的性能因素,编程时不应把此类变量同时用作频繁使用的变量。