是因为CPU 的cache 所起的作用么?

859阅读 0评论2010-03-25 pagx
分类:WINDOWS

将个人原来写的LZW压缩算法实现作了以下修改,使用一个89M的FLV视频测试,惊奇的发现速度又原来的1分25秒 变成了 12 秒。的确快了不少,不过这种优化手段要看场合使用,否则代码很难看,到时维护的时候都不知道如何死法。

static int test_mask[32] = {
       1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80,
    0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000,
    0x10000, 0x20000, 0x40000, 0x80000, 0x100000, 0x200000, 0x400000, 0x800000,
    0x1000000, 0x2000000, 0x4000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, 0x80000000
};

static int __dictbl_test[32 * 1024];
static short __dictbl[256 * 4096];

inline void restart()
{
    __bitcnt = 9;
    __dicode = 256 + 2;
    memset(__dictbl_test, 0, sizeof(__dictbl_test));
}

inline int find(int prefix, int code)
{
    int key = (prefix << 8) | code;
    if (__dictbl_test[key >> 5] &
               test_mask[key & 0x1F])
        return __dictbl[key];
    return -1;
}

inline int update(int prefix, int code)
{
    int key = (prefix << 8) | code;
    __dictbl[key] = __dicode++;
    __dictbl_test[key >> 5] |= test_mask[key & 0x1F];
    return __dicode;
}

上一篇:UDP转发小工具
下一篇:JVM, C#, C/VS6.0, C/mingw 速度的一个测试。