This project is an implementation and comparison of two data compression algorithms, Huffman coding and LZ77. This is a project for the course "Aineopintojen harjoitustyö: tietorakenteet ja algoritmit" at the University of Helsinki.
The following programs are required for all Make targets and must be installed and available in the path:
- Go version 1.14 or later
- GNU Make
Some targets require more dependencies in addition to the ones above.
If you want to run make lint
, you need
- golint
If you want to build the documentation (only necessary if you want to edit it), you need
- gnuplot
- Graphviz command line tool
If you want to run generate the performance report, you need
- GNU time
The compression programs can be built by running make all
at the root of the
repository.
make lint
runs go vet
and golint
on the project.
make test
executes unit tests and writes a test coverage report to
cover.out
. The report can be viewed by running
go tool cover -html=cover.out
An online test coverage report can be found here.
make perf-report
generates the performance report. This can take a long time.
make gendocs
generates documentation from .template.md
files in docs
directory. This target requires the files generated by make perf-report
.
Because generating the performance report is so slow, it is not done automatically.