龙之梦工作室
LOGO

技术文章


(SCI) Parallel Algorithm for Wireless Data Compression and Encryption   (SCI) Fast Algorithm of Truncated BWT for Data Compression of Sensors   Dr. Qin Jiancheng   龙之梦助力肇庆教育网云计算   Dr. Zhou Yousheng   Dr. Bai Yuan   龙之梦工作室加盟华南理工学术团队   [软件下载] ComZip超级压缩机免费版下载   继续潜行,龙之梦工作室技术研发又一年   [软件交易] “雅典娜”网页密码锁在线购买   [软件交易] Super Prime超级质数机在线购买   [软件交易] ComZip超级压缩机在线购买   [信息安全] “风语者”高强度加密技术   [信息安全] 多层纵深防御体系结构   [合著] 专利:安全事件检测方法及装置  

[合著] 网友交流:关于ComZip压缩技术介绍

[ 2009-03-14 00:44:55 ]

  引言/提要:琐碎的部分体现的是程序设计的功力,如果有10年以上的编程经验(当然不是那种简单的业务程序),软件表现方面体现出差距也就不足为奇,细节决定成败嘛。但是这个部分就真的只能够依靠自己不断的技术积累,跟武林高手需要长年累月的练功没什么两样,实在说不出什么窍门来。

  关键词:压缩软件,奥林匹克,算法优化,核心技术,核心竞争力,压缩技术

ComZip超级压缩机

网友 Storm_dragon(2009-2-13):
  ComZip不错。压缩效果不错,就是耗内存实在太大,压缩二十多张1440*900的桌面截图(108M)把1G内存都耗光了,页面文件也耗了1G多,而且进度有问题,经常最后几个百分比要无限等待下去。 另外用马尔可夫链会不会有更好的效果。
  还有一个bug,如果源文件没有后缀名,那么会出现多余的压缩,比如我要压缩 tar3, 他会把同目录下的 tar3.xxx 一起压缩进去。
  这软件内核不错,就是界面太粗糙,不知道面向的是什么样的用户群,如果更人性的使用界面会更好。
  另外,我也是一名计算机程序爱好者,能不能透漏一下更多的技术细节(LZ77、算术编码,大概的介绍过了),或者是当初开发这个软件的资料来源,貌似中国很少有这方面的资料。

龙之梦工作室(2009-2-13):
  谢谢您对ComZip超级压缩机软件的支持!确实,只要自己实际测试一下,就会知道压缩效果的真假,但是现在仍然有很多人先入为主,一看是“国产软件”,想都不想就断言这是吹牛骗人的。
  对于占用内存的情况,其实物理内存的真实占用量并不象看到的那么多。默认设置的8MB数据字典,用512MB内存的电脑就可以流畅运行。除非动用了128MB数据字典(“更强”模式),才真正用满这1GB多的内存。在帮助文档里面有这个问题的解释,链接地址:
http://www.28x28.com/index.php?id=soft_000000011#a50
  至于为什么会看见ComZip占用了那么多内存,那是由于ComZip软件不是采用动态内存分配,而是直接开辟了1GB以上的静态大数组。虽然看上去很大,其实没有用到的部分是不会占据物理内存的。用静态大数组当然是为了省去动态分配内存的时间开销,可以理解为ComZip在自己的进程空间范围内,接管了Windows系统的内存分配功能,从而提高效率。这也许可以算一个技术细节吧。
  更多的技术细节就不知该从何说起。为了改善ComZip的表现,我们采用了各种各样的优化方法,有点儿纷繁复杂。幸好我们之前有一些相关的技术文章发布在网站上,后面解释的时候,可以直接给出链接。

  显示进度百分比方面,我们确实是根据已经压缩的部分与总长度的比值来显示的。到最后几个点等待的时间比较长,我们猜测是由于到最后需要从缓冲区写入硬盘,而写硬盘比较慢而造成的。另一个可能是电脑的内存太小了,导致拼命调用虚拟内存,频繁页面交换。我们建议目前采用2GB内存的电脑,可以流畅运行ComZip。
  马尔可夫链是不是指N阶的动态预测模型,用来配合算术编码压缩的?如果是的话,ComZip已经是在用1阶马尔可夫链了。其实7-zip用到的LZMA算法,全称就是Lempel-Ziv马尔可夫链算法,而ComZip也是用算术编码压缩,跟7-zip可算是师出同门。只不过ComZip在10年前就已经进行开发,那时候7-zip还不知道在哪里,也不知道哪个软件开发得更早。或许对7-zip来说,ComZip也象是突然从地下冒出来的一样。
  我们承认ComZip的人机界面是够原始的,原因是ComZip向来针对那些数以GB计的海量商业数据压缩,而不是面向个人市场。ComZip多数是跟商业机器打交道,而电脑本身对图形界面不感冒,反而是命令行自动操作脚本、XML数据接口之类的界面更适合电脑之间的通信。《关于ComZip压缩软件市场份额》一文有解释,链接地址:
http://www.28x28.com/index.php?id=tech_000000088
  另一方面,我们的精力集中于压缩率、压缩速度等硬指标的提升上,而把改善界面的事情留给有兴趣的网友去完成。根据我们的授权方式,可以有第三方外挂软件做ComZip的界面,并且自己开发出来自己用是完全没有问题的,如果要分发则需要授权。具体可以看帮助文档,链接地址:
http://www.28x28.com/index.php?id=soft_000000011#a200
  您提到的BUG,可能就是我们的图形界面不完善的表现。谢谢您的反映,我们具体检查一下,有BUG的话会修改掉。其实您也可以自己开发界面程序,生成XML文件让ComZip的文本内核程序去处理。只要XML文件格式没错,ComZip就会正常压缩。

  正如网站上的ComZip软件介绍所说,ComZip基于3种压缩算法:BWT、LZSS、算术编码。这些基础算法,在其它压缩软件中也是大同小异。因为基础算法要想有革命性的创新相当困难,假如真有那么重大的改进,我们工作室就会和Lempel-Ziv等前辈们齐名了,呵呵。
  网上有人看见我们说ComZip是基于10年前就有的压缩算法,马上就觉得ComZip的技术过时了,显然是误解。基础的东西可不象潮流的技术概念那样容易过时,Windows 7还是基于二进制的呢,二进制够古老了吧?难道Windows 7已经过时了吗?
  ComZip现在才露脸,并不等于是现在才开始开发,而是一直都有技术更新。我们知道算术编码压缩算法以前是IBM的专利,而现在算术编码的关键部分专利已经过期失效。另外BWT、LZ算法本身没有做专利保护。这样,ComZip就不存在专利侵权的问题。
  事实上我们也没有特殊的资料来源,开发ComZip所用到的资料,跟现在互联网上搜索得到的,关于上述3种压缩算法的中文网页没有什么两样。可以说,各种不同的压缩软件,开发时候的起跑线是基本一样的(这里是指通用数据压缩,如果针对特定数据就会不一样,例如我们就没有找到压缩exe文件所用的BCJ过滤器的资料)。而不同软件之间的差异,说白了就是各种程序优化技巧的综合运用。哪个软件优化得更好,谁就表现更出色。
  例如,ComZip用到了128MB的数据字典,比WinRAR的4MB数据字典大得多。但是大字典仅仅是提高了字符串匹配的机会,并不等于提高了压缩率。因为大字典意味着索引编码的长度也会增加,4MB需要22位索引,128MB就要27位了。如果索引本身太长,即使算术编码压缩也不能改善到理想的情况。
  ComZip就采用了分级的索引,不同级别的索引有不同的长度。这就类似于CPU的L1、L2、L3 Cache,不同级别的Cache有不同的速度。我们的另一个软件“雅典娜”网页密码锁,也采用了分级索引的压缩。只不过“雅典娜”是分2级,而ComZip是分4级,最高能够支持4GB的数据字典(目前实际的数据字典容量仅达到128MB)。文章《关于数据压缩算法》介绍了分级索引的设计思想,链接地址:
http://www.28x28.com/index.php?id=tech_000000073

  另一个问题就是数据字典增大了之后,怎样保持压缩速度。ComZip的数据字典128MB,是WinRAR数据字典4MB的32倍。如果ComZip还用WinRAR一模一样的压缩程序,那么压缩时间就将是WinRAR的32倍。别人1分钟可以压缩完的东西,自己要等上半个小时,谁可以接受呢?可以这样说,WinRAR在自己4MB的小块田地里面精耕细作,而ComZip家大业大,不在乎一些细小地方的得失,只有这样才可以快速完成大容量数据字典的压缩运算。具体表现就是配置文件cz.ini里面的参数sight,如果sight设置得大一些,字符串匹配的次数就多一些,压缩率提高的同时压缩速度会降低。反之,sight设得小就会压缩得快,牺牲一点压缩率。
  更进一步的细节就没什么值得说的了,无非就是常规的程序代码优化,例如尽量使用寄存器,减少内存访问,尽量让数据集中一些,使CPU的Cache发挥性能等等。这些琐碎的部分体现的是程序设计的功力,如果有10年以上的编程经验(当然不是那种简单的业务程序),软件表现方面体现出差距也就不足为奇,细节决定成败嘛。但是这个部分就真的只能够依靠自己不断的技术积累,跟武林高手需要长年累月的练功没什么两样,实在说不出什么窍门来。
  ComZip也是有10多年的开发积累,才形成现在这个样子。开发改进的过程中,不断进行压缩实验测试相当重要。没有这些持续不断积累的测试数据,我们不会知道索引编码怎样设计才合适,不会知道算术编码里面的衰减系数应该怎样确定,不会知道怎样编码才会运行得更快。配置文件cz.ini里面有很多参数,您可以试试调节一下,看看对压缩结果有什么影响。
  对于程序优化,文章《利用计算机算法优化提高效益》可以作为参考资料,链接地址:
http://www.28x28.com/index.php?id=tech_000000010

  大致情况就是这样,感谢您的支持,这是我们前进的动力!
发表意见   相关搜索   返回主页   关闭窗口
相关文章:
  [合著] 网友交流:关于ComZip压缩软件市场份额 [2009-02-01]
  [原创] 提升自身实力,才能安度危机 [2009-01-01]
  [原创] 议刘翔退赛“阴谋论” [2008-11-06]
  [原创] ComZip阵列压缩与固实压缩对比测试 [2008-10-05]
  [合著] 网友交流:关于“雅典娜”软件漏洞的发现 [2008-09-30]
  [合著] 网友交流:关于ComZip超级压缩机 [2008-08-10]

最新留言:
  [2014-10-16]
  [2014-10-16]
  [2014-06-04]
  [2014-06-04]
  [2013-12-08]
  [2013-11-29]


从2005年3月18日起
访问本站页面计数器人次
版权所有 © 2005 龙之梦工作室,保留一切权利。
电子邮箱:master@28x28.com , co2288@126.com
相关链接 |