high performance software

SHARC

About SHARC
Centaurean's SHARC is a state of the art compressor with one aim : speed. It trades off a slight increase in archive filesize (not too much though) for a great improvement in speed over all the existing compressors known of date.
As a rough figure, on an Intel Core i7-2600K @ 3.40 GHz, on a single core it can compress at a rate of 700 MB/s and decompress at a rate of 1 GB/s, which is none other than the best performance you will get from an archiver nowadays, hands down. Hardware is often a limiting factor !

So how does SHARC work ?
Well if you don't want to spend time studying the source code available at GitHub here is a simplified summary :
The algorithm reads an input stream consisting of bytes, and if it finds repetitive entries it reduces the length of the output bytes, by storing dictionary keys instead of the bytes read. To be efficient the dictionaries must be calibrated for their task and their keys must be accessed using a very good dispersion hash : SHARC utilizes a specifically designed derivative of the FNV-1a hash algorithm, hand crafted for maximum dispersion and speed. If no repetition can be found, some parts of the file are copied as is.
SHARC is ISO C99 compatible, and can be compiled on many platforms including of course Windows, Linux, FreeBSD or OSX. There is purposedly no assembly for portability, but no compromise has been done and maximum code optimisation is present at every critical level.
In dual pass mode, compression ratio is better and speed is still very fast. See the -c1 option for this.
SHARC is licensed under the GPL v3 on the one hand for use in any open source project, as long as the license is kept as is.
A commercial license is also available, if you are currently working on a closed-source commercial project, a one time purchase gives you the privilege of using our compressor in one of your products without having to disclose your code.

Here is an example session using SHARC (Windows 8, Intel Core i7-2600K CPU @ 3.40GHz, 8GB RAM, various ramdisks) :
E:\>sharc_win64.exe -n g:\enwik9
Compressed g:\enwik9 to g:\enwik9.sharc, 1000000000 bytes in, 610728054 bytes out, Ratio out / in = 61.1%, Time = 1.778 s, Speed = 536 MB/s

E:\>sharc_win64.exe -n e:\enwik8
Compressed e:\enwik8 to e:\enwik8.sharc, 100000000 bytes in, 61841352 bytes out, Ratio out / in = 61.8%, Time = 0.159 s, Speed = 599 MB/s

E:\>sharc_win64.exe -n -d e:\enwik8.sharc
Decompressed e:\enwik8.sharc to e:\enwik8, 61841352 bytes in, 100000000 bytes out, Time = 0.095 s, Speed = 1003 MB/s

E:\>sharc_win64.exe -v
Centaurean Sharc 0.9.8
Built for Microsoft Windows (Little endian system, 64 bits) using GCC 4.8.1, Aug 19 2013 17:41:36
										

Download a SHARC binary Download source and build SHARC Buy a commercial license for SHARC
We provide binaries for the following platforms :
Windows 32/64 bits, Linux 32/64 bits and Mac OSX.
The latest version available is 0.9.10-beta.

Download binary for Windows 32 bits
Download binary for Windows 64 bits
Download binary for Linux 32 bits
Download binary for Linux 64 bits
Download binary for Mac OSX (Intel based)
Building SHARC is easy. You just need a "make" and "GCC" for your platform, and if you don't the code is pure C99 so should be easily handled by most compilers.

First things first, you need to download the source code in .tar.gz format or in .zip format, and decompress it in a directory of your choice.
Now, let's discuss some platform specifics :

Windows
We can't emphasize enough how MinGW-builds is the ideal platform for compiling SHARC on Windows !
This basically sets up a GNU environment on Windows with Make and GCC.
If cc is unknown, just use the option make CROSS-PREFIX=g to specify gcc as the compiler.

Linux
On Linux things are simple as Make and GCC are (or can simply be made) part of every distribution.

Mac OSX
Usually Mac OSX is provided with a wrapper for clang so typing gcc and make in a console should work. If not, the MacPorts project is recommended as it will enable you to benefit from the latest version of GCC ported for Mac.

FreeBSD
On FreeBSD the default make is not GNU make, it will be necessary to download gmake to build SHARC.
This is quite straithforward with the following command : pkg_add -r gmake

So how do I build SHARC then ?
Well the answer is extremely simple : just cd into the src directory, type make (or gmake in FreeBSD) and there you go !
We will soon post the price of our commercial license and its scope, as soon as v1.0.0 is available.
Please contact us for more information.

One year support with 12h email reply will be included.

Use SHARC Improve SHARC
On Windows, to compress with SHARC just type the following command :
sharc.exe some_file
To decompress :
sharc.exe -d some_file.sharc

On Linux or Mac OS/X, to compress just type :
./sharc some_file
To decompress :
./sharc -d some_file.sharc

Please note the option -h or --help will list all available options.

Here are the options of version 0.9.10-beta :
  -c[LEVEL], --compress[=LEVEL]     Compress files using LEVEL if specified (default)
                                    LEVEL can have the following values :
                                    0 = Fastest compression algorithm (default)
                                    1 = Better compression (dual pass), slightly slower
  -d, --decompress                  Decompress files
  -p[PATH], --output-path[=PATH]    Set output path
  -n, --no-prompt                   Overwrite without prompting
  -i, --stdin                       Read from stdin
  -o, --stdout                      Write to stdout
  -v, --version                     Display version information
  -h, --help                        Display this help
										
If you wish to report a bug, please use the following link : report a SHARC issue on GitHub.
Don't forget to specify which version / platform you are using. Thank you !
blog comments powered by Disqus