我正在优化一个PNG编码器,用于Flash SWFs(但我是用Haxe编写的)。
到目前为止,我已经通过使用快速内存读/写成功地加速了一些事情。
在对我的代码进行分析时,我注意到约75%的时间都花费在单个调用Flash内置的compress()方法上,该方法使用zlib算法(转而使用DEFLATE)。
我不太在意压缩比,但更快的压缩会很棒。因此,我想知道是否值得尝试自己实现zlib / DEFLATE。一些搜索已经找到了zlib C实现源代码,但它并不是轻松阅读(或易于移植!)。
到目前为止,我已经通过使用快速内存读/写成功地加速了一些事情。
在对我的代码进行分析时,我注意到约75%的时间都花费在单个调用Flash内置的compress()方法上,该方法使用zlib算法(转而使用DEFLATE)。
我不太在意压缩比,但更快的压缩会很棒。因此,我想知道是否值得尝试自己实现zlib / DEFLATE。一些搜索已经找到了zlib C实现源代码,但它并不是轻松阅读(或易于移植!)。
有没有一些简单的zlib/DEFLATE实现,我可以用作起点?我不想深入研究两个 规范,特别是因为我不知道在AVM2中运行的实现是否能够像原生Flash实现一样快。
compress()
并没有使用deflate,而是使用zlib,而zlib又使用deflate(PNG规范指出压缩应该是zlib格式)。所以,我仍然需要实现deflate,但我一直忽略了zlib;-) - Cameronzlib
格式只是deflate
格式的简单包装器。因此,如果您可以进行压缩并能够计算 Adler32 校验和(这很容易),则具备了zlib
格式。 - Paŭlo Ebermann