自定义DEFLATE实现以加速PNG编码

时间:2011-06-13 06:17:58

标签: flash png compression haxe deflate

我正在优化PNG编码器以便在Flash SWF中使用(但我在Haxe中编写)。

到目前为止,我已经设法加快了速度,主要是使用speedy memory read/writes

在分析我的代码时,我注意到大约75%的时间用于一次调用Flash的内置compress()方法,该方法使用zlib算法(依次使用DEFLATE)。 p>

我对压缩率并不太挑剔,但更快的压缩会很棒。所以,我想知道是否值得尝试自己实现zlib / DEFLATE。有点搜索已经打开了zlib C实现源,但它并不是简单的轻读(或易于移植!)。

我是否可以使用zlib / DEFLATE的简单实现作为起点?我宁愿不必涉及two specs,特别是因为我不知道在AVM2中运行的实现是否甚至可以像原始Flash一样快速执行。< / p>

3 个答案:

答案 0 :(得分:3)

我认为使用非原生deflate算法无法获得更好的性能。但是,您可能能够以异步方式运行它,这可能会有所不同。如果你想移植它,我认为最好找到一个AS3或JavaScript实现,比如https://github.com/dankogai/js-deflate。祝你好运!

答案 1 :(得分:3)

我最终从头开始实现deflate / zlib,刚刚在GitHub(README)上发布了它,以及构建在它上面的PNG编码器。我还写了一篇关于PNG编码器的博客文章,benchmark将其与其他编码器进行比较。

压缩实现包含在DeflateStream.hx中,并且设法显着加快编码过程(并允许它完全异步)。

答案 2 :(得分:1)

尝试使用fzipascompress