七月 2009

一个高效的固定大小内存池管理算法

这两天,在改一个既有程序的内存池管理算法,原有的管理算法基于固定内存最大块管理,块的尺寸固定为最大可利用内存大小,在大部分的情况下内存利用率非常低。

为此打算找一个高速的内存利用率高的算法。先是看了看FastMM,代码太复杂,使用了太多的汇编语言,过于庞大,接近8000行代码。于是放弃,找来找去,发现sqlite的内存池管理算法还是挺牛叉的。它是基于二分策略的,每一个内存块的大小是2的指数。

视频开发中使用有理数进行小数运算

在研究视频解码程序的时候,我们看到的源代码比如FFMpeg中几乎都是使用有理数来进行运算小数运算,原因就是有理数相对浮点运算来说,几乎没有误差,不会产生误差的累积和扩散。