C#和Java的文件压缩。

我用Java写了个程序压缩文件,由于找到的包不支持生成rar格式的压缩文件,最后用程序调用WinRaR的Rar.exe完成了程序。 发现压缩一个80M的文件,需要40秒。
同事的C#的程序用了ICSharpCode.SharpZipLib.dll。 发现压缩一个80M的文件,需要20秒。
问题:Java的比C#慢没什么疑问,但奇怪的是我用WinRAR压缩一个80M的文件也是接近40秒,C#的程序怎么会比WinRAR快(注意是rar格式)?
还有ICSharpCode.SharpZipLib.dll,不是不支持rar格式吗什么时候可以了,我记得rar格式的压缩算法还没公开?

zip和rar用的不同的压缩算法,
zip的比较简单,计算复杂度低,压缩比也低。zip的deflate算法公开,经过几十年优化已被总结出很快的实现。内存最小可以只要32K
rar是私有格式,压缩比较高,内存也需要典型的4MB。
刚出来时,rar针对32位386设计的,硬件要求比zip高一个数量级。
另外在进程调用子进程,系统IO开销,和对子进程分配的较小的执行优先级。都可能导致速度慢。追问

还有ICSharpCode.SharpZipLib.dll,不是不支持rar格式吗什么时候可以了,我记得rar格式的压缩算法还没公开?

追答

SharpZipLib 并不支持rar。
支持, gzip, zlib and raw deflate, as well as BZip2

你用SharpZipLib生成rar,很可能是tar误认,或者zip冒充的rar文件。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-18
java只支持zip,tar等跨平台的压缩格式 。。rar是window的。
相似回答