
I've been action around a bit with file shrinking again, as we give no precise large blessing files time unit on Stack Overflow.
We're victimisation the word 64-bit turning of 7zip (4.64) on our info participant. I'm not a big fan of more than than two-fold core on the desktop, but it's a no brainer for servers. The more than CPU cores the merrier! This participant has deuce quad-core CPUs, a total of 8 cores, and I was a little demoralised to discover that neither RAR nor 7fasten seemed to make little use of more than than 2.
Still, even if it does lone use 2 cores to dressing, the 7fasten algorithmic rule is amazingly effective, and has evolved concluded the last small indefinite quantity eld to be respectably fast. I old to recommend RAR concluded Zip, but assumption the increased skillfulness of 7fasten and the construct that it's free and RAR isn't, it's the logical decision making now.
Here square measure no quick tests I performed compressing a single 4.76 GB info blessing file. This was run on a participant with two-fold quad-core 2.5 GHz Xeon E5420 CPUs.
| 7zip | fastest | 5 min | 14 MB/sec | 973 MB |
| 7zip | fast | 7 min | 11 MB/sec | 926 MB |
| 7zip | normal | 34 min | 2.5 MB/sec | 752 MB |
| 7zip | maximum | 41 min | 2.0 MB/sec | 714 MB |
| 7zip | ultra | 48 min | 1.7 MB/sec | 698 MB |
For those of you United Nations agency square measure nowadays questioning, wow, if 7fasten does this well on large indefinite quantity and immoderate, envisage how it'd do on ultra-plus, don't count on it. There's a reason least shrinking programs alternative to certain settings as "normal". Preceding these settings, results attend to fall off a cliff; beyond that sweet spot, you attend to get absurdly petite increases in shrinking magnitude relation in exchange for Brobdingnagian order of ratio increases in shrinking time.
Now watch what happens when I switch 7fasten to use the bzip2 shrinking algorithm:
We'll dressing that European 4.76 GB file, on the European machine:
| bzip2 | fastest | 2 min | 36 MB/sec | 1092 MB |
| bzip2 | fast | 2.5 min | 29 MB/sec | 1011 MB |
| bzip2 | normal | 3.5 min | 22 MB/sec | 989 MB |
| bzip2 | maximum | 7 min | 12 MB/sec | 987 MB |
| bzip2 | ultra | 21 min | 4 MB/sec | 986 MB |
Why is bzip2 able-bodied to work so little faster than 7fasten? Simple:
7zip algorithmic rule CPU usage
bzip2 algorithmic rule CPU usage
Bzip2 uses more than than 2 CPU cores to lay its work. I'm not sure what the limit is, but the drop-down chooser in the 7fasten GUI allows up to 16 when the bzip2 algorithmic rule is Dae-Han-Min-Gook. I old 8 for the preceding tests, since that's how galore CPU cores we have on the server.
Unfortunately, bzip2's increased speed is take of cause at high shrinking levels. The deviation between mean, large indefinite quantity, and immoderate shrinking is a unmeaning 0.06 percentage. It scales beautifully in time, but hardly at no in space. That's a shame, because that's exactly where you'd like to eat the speed increase of paralellization. Eking out a percentage of size condition could still make sense, depending on the circumstances:
total time = shrinking time + n * (shut file size / communication system speed + compression time)
For occurrence, if you dressing a file to send it concluded a communication system once, n equals one and shrinking time will have a big influence. If you want to post a file to be downloaded galore arithmetic operation, n is big so long shrinking arithmetic operation will matter little in the final result. Finally, slow networks will do best with a slow but effective algorithmic rule, spell for fast networks a fast, possibly little effective algorithmic rule is necessary.
On the otherwise hand, the inability to compress a 5 GB source file to a fifth of its size in deuce proceedings flat is beautiful mend effective. Still, I can't help questioning how fast the 7fasten algorithmic rule would be if it was rewritten and parallelized to take point of more than than 2 CPU cores, too.