Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
Apr 30, 2015

Efficient Compression Tool

Efficient Compression Tool (or ECT) is a C++ file optimizer. It supports PNG, JPEG, GZIP and ZIP files.


All tests were run on OS X 10.11 using an i5-2500S and clang.

File: enwik8, 100,000,000 bytes, compressed into gzip format

Compressor File Size Time
gzip -9 36,475,811B 6.2s
zopfli -i1 35,139,225B 1m 6.4s
ECT -2 35,019,083B 16.9s
zopfli -i5 35,014,777B 1m 56.2s
ECT -3 35,012,378B 18.3s
zopfli -i15 34,987,258B 4m 3.2s
ECT -4 34,964,155B 22.5s
ECT -5 34,942,811B 28.9s
ECT -6 34,940,747B 49.7s
ECT -7 34,938,252B 1m 7.9s
ECT -8 34,937,694B 3m 54.8s


From the terminal

ECT is built with cmake

mkdir build
cd build
cmake ../src

In addition, you can add the following arguments to the cmake call to turn various features on and off:

  • -DECT_MULTITHREADING=OFF: Turn off multithreading support
  • -DECT_FOLDER_SUPPORT=ON: Turn on the ability to recursively search folders (requires Boost filesystem)

With Xcode

You can use cmake to generate an Xcode project. Just add -G Xcode to the end of the cmake command:

mkdir build
cd build
cmake ../src -G Xcode

You will run into a slight issue, which is that Xcode doesn't know how to compile some of the asm files that are a part of the mozjpeg project. To fix this, locate your copy of nasm (/usr/local/bin/nasm in the example) navigate to the Build Rules of the simd target, and add a custom rule to process source files matching *.asm with the following script:

/usr/local/bin/nasm "-I${PROJECT_DIR}/mozjpeg" -DMACHO -D__x86_64__ "-I${PROJECT_DIR}/mozjpeg/simd/nasm/" "-I${PROJECT_DIR}/mozjpeg/simd/x86_64/" -f macho64 -o "${BUILT_PRODUCTS_DIR}/x86_64/${INPUT_FILE_BASE}.o" "${INPUT_FILE_PATH}"

And with $(BUILT_PRODUCTS_DIR)/x86_64/${INPUT_FILE_BASE}.o as the Output files

Assuming you're just using Xcode for development and don't need maximum speed, you can also just disable the asm files by adding -DWITH_SIMD=OFF to the cmake call.

You can’t perform that action at this time.