This is my Charles University CS bachelor thesis. Feel free to grab what you like, but don't sell it and keep attribution (legalese: http://creativecommons.org/licenses/by-nc-sa/2.0/legalcode, humanese: http://creativecommons.org/licenses/by-nc-sa/2.0/). The source code is hosted on GitHub.
text/
contains the text of the thesis. src/
contains associated source
code in C. TODO.md
contains some ideas for future work.
I am developing this project on Linux with GCC. It may work somewhere else, but only accidentally.
The code requires LibUCW 6.4 to build (I use its
red-black trees). My code assumes that it's installed under the /usr
prefix.
For benchmarking, you additionally need:
- jansson for JSON output
- matplotlib for plotting graphs
experiments/btree-dot
needs:
- graphviz for rendering graphs
experiments/cloud
needs:
- urllib3 for fetching the dataset
make test
# Or:
make
bin/test
You need GCOV and LCOV.
make test_coverage
# browse src/coverage-out/index.html
src/experiments/performance
contains a "script" that runs several operation
sequences against dictionary implementations. Use it like this:
make bin/experiments/performance
# To run all benchmarks:
bin/experiments/performance
Results are saved in src/experiments/performance/results.json
. You can plot
some interesting graphs by running:
cd experiments/performance
./plot_results.py