Revisiting 7-ZIP

In my previous post, I extolled the virtues of WinRAR and the RAR archive format. I disregarded 7-ZIP because it didn't do well in that particular compression study, and because my previous experiences with it had shown it to be efficient, but brutally slow.


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2007/02/revisiting-7-zip.html

Now if only our politicians were willing to revise their positions. Your a real man.

Good for you for fixing your own mistakes!

Well, Jon, your momma is so fat that…

That’s great and all but Windows still sucks compared to Macs. :wink:

Glad to see you’re willing to revisit a past problem. As for “ultra-slick” integration, I can right-click a file and 7-zip it myself. I actually like the window popping up rather than the 4000 menu options it feels like WinRAR is giving me. But that’s a matter of style and taste.

I’ve seen 7-zip be very good for arrays of files that are all very similar. One example where this can be seen is collections of ROM images that have relatively small differences from one another. RAR with solid archive support may have similar results, however 7-zip seems to have that type of feature enabled by default.

Zip may not be the best format out there but it’s as close to a standard as we have. It’s universal, easy and there are more free zip compression/decompression libraries out there than you can shake a stick at, plus, and this is the most important part, it’s built right into most operating systems.

In a way I feel you’ve already hit on all the points I’d make in your blog post “Worse Is Better”. Yes, 7Zip and WinRAR are much better yet they still require another install, another purchase, another program. The same concept is why I was so happy to see a decent Photo manager in Vista. Finally, I don’t have to install yet another program like Picasa to get decent photo management tools.

I also take the concepts of your “Non-Native UI’s Suck” even further. I much prefer the built in Windows Zip shell integration because for 99.9% of the tasks I do with zips it just works and it feels like part of the OS. Even when I’ve had to use programs that have shell integration like WinZip or WinRAR I always feel they are trying too hard and their icons are jarring for a utility level application.

I feel this is a similiar argument to MP3 vs. other formats. The MP3 format is often decryed as a horrible format compared to it’s modern counterparts yet it still stubbornly remains a de facto standard.

I scanned over the comments from the earlier post and just wanted to throw in my two cents about Open Source (although I’ll withhold comment on Free Software for the moment).

The reason Open Source appeals to me as a development model is because it seems to me that it is the most efficient software development method. Take the Linux kernel. The thing that keeps the Linux Kernel “nimble” and innovative is that anyone, at any time, can fork the code and write their own variant. That means that the Kernel Developers always have to be the top of their game, because the moment they’re not, anyone else can take over their technical lead. Bad for the developer’s peace of mind and their job security if they start to slack off? Yes. But good for making sure that Linux development happens at as fast a pace as possible? Absolutely.

GNU Emacs, a common Linux/Unix text editor, is a good example of this: Richard Stallman himself wrote much of Emacs, but some developers were not happy with his, er, management style - so they forked it into Lucid Emacs, which became what is today XEmacs. GNU Emacs and XEmacs today coexist, both adding features and both feeling pressure from the other to never fall behind. At the same time, because they both use open codebases, there is no “penalty” for switching between the two; even complex applications the plug-in mail clients worth in both of them. (For the record, I use GNU Emacs).

GCC, the main C compiler on Linux, is perhaps an even better example: GCC was forked, and the forked version ended up being better - so it was merged back into the ‘mainline’ version. GCC is a better piece of software today because of this.

Countless more examples exist. What makes them possible was that the source code was there for the taking: if you ever feel like you can do better than Linus co on the kernel, or the GNU team on Emacs, or anything else under an OSS license, then you can take that code and run with it. But can you do that with the NT kernel? With MSOffice? No… if the Microsoft team is not at the top of their game, it doesn’t matter: You can’t take your talent and produce a better Word.

I use Ubuntu as my primary OS, and this effect really shows. OSS is really “survival of the fittest,” a true free market unencumbered by the inefficiencies of file format incompatibility, reimplementation of secret network protocols, etc. The end result is that I’ve found I have significantly less tolerance for things to go wrong. The kind of UI ‘bugs’ that I experience with Windows are things that would make me instantly switch Linux distros- which means Linux distros don’t make those mistakes, or at least, they don’t for very long. Clippy would not have lived long - or existed- in a Linux distro; nor would the failure to integrate better Zip, ftp and remote access utilities. These are basic things in any Linux distro, and it still surprises me that any OS can get away with not including them.

I’ve used WinRAR before, and I cannot recall any advantage that it had in the shell integration arena over 7zip apart from a little icon in the context menu (which, actually, is kind of handy when navigating quickly through menus). I’m glad you decided to give it a second chance.

I did a bit more testing with 7-ZIP and I have some further observations to share.

  1. The “fastest” mode in 7-ZIP is terrible. WinRAR is easily 2x faster in its “fastest” mode. And because it’s called “fastest” and not “sorta-kinda-fast”, that is NOT cool. It does compress slightly better in fastest mode, but not enough to compensate, and besides, that’s hardly the point.

  2. 7-ZIP’s normal, default compression settings are definitely comparable to WinRAR. It’s actually noticeably faster in some cases using the defaults. And of course it compresses better overall.

I dislike the way 7-ZIP does not predict the compression ratio as it’s compressing. I use this to gauge whether the operation is worth continuing; it’s one of my favorite WinRAR features.

I use “fastest” mode quite a bit for quick and dirty archiving of VMs, so the poor showing of 7-ZIP in that mode is a real bummer.

Whoo-hoo! There you go promoting OSS again. Thank you :smiley:

A couple of questions (I’m currently in no position to install new software):

Can 7-ZIP deal with Unicode, can it store ACL permissions, and does it have recovery records?

An other big advantage of 7-Zip is its permissive license (LGPL). I mean by this that you can bundle the DLL’s for decompressing and compressing with your application (as opposed to Rar where only the decompression part is “free”).

I do not think 7-ZIP has any equivalent to the RAR parity files. More on that here:

http://www.win-rar.com/index.php?id=24kb=1kb_article_id=142

Bah! Flip Flopper! :wink:

My favourite compression utility is :
http://tugzip.com/
It handles all the usual formats including zip,rar,7-zip. It even reads .lib files - listing the .o files inside which is kinda cool. Shell integration is on a par with winrar and the ui is ( to my eyes anyway ) less garish - easier on the eyes. Oh and its free.

Masklinn, you’re correct, though CPU utilization never tells the whole story; memory access patterns impact performance significantly. All a graph would show is that one is nearly a combined 50% and the other two roughtly 100%.

Also, I’m pretty sure foldip was testing with solid; 9 GB is way beyond the effective limit of Winrar’s 4MB dictionary. One of 7-zip’s (and WinRK’s) strengths is that you can use as much memory as you want to find the optimal packing; the major caveat being that you need that much to decompress. However, this is mainly suited to specialized applications like that, for generic use larger dictionaries rarely gain much.

I did find out after some research that 7-zip had multithreading as a hidden option since 2003 (possibly because it didn’t work well), and made it the default at the same time as winrar added it (4.42 vs 3.60b1). Huh.

I achieve much better compression ratios with 7-zip in contrast to all other compression utilities ever tested.
each month I uncompress daily bzip’ed tarball’ed backups and merge them into a single 7-zip backup of an entire month. most of the files of the daily backup have never changed during the month.
7-zip compresses a directory structure of around 9 GB to 80 MB where other utilities need around 2 GB !!

After several years of using RAR I’m switching to 7z. It compresses my databases to 75% of RAR in quite comparable time. This really matters. And it integrates into TotalCommander smoothly. (What? Anybody still uses bare Explorer?)