Hoshiningen / MonoidTalk

Supporting software for a tech talk on monoids.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

The Power of Monoids

This was created to support a tech talk by the same name, and contains a practical monoid application (performing database queries via map-reduce and incremental aggregation).

There are a series of benchmarks to profile the database queries, and there are unit tests to ensure correct behavior in database operations / queries.

Building

This is built using C++20 and has a few dependencies that are fetched during configuration. See the cmake folder for a list of them. This has only been tested on MSVC 19.29.30040.0.

To build (from the root directory):

mkdir build && cd build
cmake ..
cmake --build .

Plotting

A script is provided to plot the benchmark results. It leverages matplotlib to handle the chart creation, and thus it's necessary to install the script's dependencies.

Within a virtual environment, or not, at the root directory of this repo, invoke:

pip install -r requirements.txt

Then, it's necessary to generate the benchmark results. Locate the monoid-benchmarks executable and invoke:

./monoid-benchmarks.exe --benchmark_format=json > results.json

Now, with the benchmark results in hand, you can plot them by:

python plot.py results.json

About

Supporting software for a tech talk on monoids.


Languages

Language:C++ 87.3%Language:Python 7.0%Language:CMake 5.7%