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/testYou need GCOV and LCOV.
make test_coverage
# browse src/coverage-out/index.htmlsrc/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/performanceResults are saved in src/experiments/performance/results.json. You can plot
some interesting graphs by running:
cd experiments/performance
./plot_results.py