sat-solver 0.2.1

A SAT solver implemented in Rust, focusing on performance, efficiency and experimentation.
Documentation
import os
import json

CRITERION_DIR = "target/criterion/"


def extract_benchmark_data():
    group_benchmarks = {}

    for group in os.listdir(CRITERION_DIR):
        group_path = os.path.join(CRITERION_DIR, group)
        if not os.path.isdir(group_path):
            continue

        benchmarks = []

        for benchmark in os.listdir(group_path):
            bench_path = os.path.join(group_path, benchmark, "base", "estimates.json")

            if os.path.exists(bench_path):
                with open(bench_path, "r") as f:
                    data = json.load(f)

                mean = data.get("mean", {}).get("point_estimate", None)
                std_dev = data.get("std_dev", {}).get("point_estimate", None)

                if mean and std_dev:
                    benchmarks.append((benchmark, mean, std_dev))

        if benchmarks:
            group_benchmarks[group] = benchmarks

    return group_benchmarks


def generate_latex_tables(group_benchmarks):
    latex_sections = []

    for group, benchmarks in group_benchmarks.items():
        group = group.replace("_", "-")
        label = f"\label{{tab:bench-{group}}}".replace(" ", "-")
        latex = [
            rf"\begin{{cmptable}}[h]{{Benchmark Results for {group}{label}}}",
            r"    \begin{tabular}{|l|c|c|}",
            r"        \hline",
            r"        Benchmark & Mean (ns) & Std Dev (ns) \\",
            r"        \hline",
        ]

        for name, mean, std_dev in benchmarks:
            latex.append(f"        {name} & {mean:.2f} & {std_dev:.2f} \\\\")

        latex.append(r"        \hline")
        latex.append(r"    \end{tabular}")
        label = label.replace("\\", "")
        latex.append(r"\end{cmptable}")
        latex.append("\n")

        latex_sections.append("\n".join(latex))

    return "\n".join(latex_sections)


if __name__ == "__main__":
    group_benchmarks = extract_benchmark_data()

    if group_benchmarks:
        latex_tables = generate_latex_tables(group_benchmarks)

        with open("benchmark_results.tex", "w") as f:
            f.write(latex_tables)

        print("LaTeX tables saved to benchmark_results.tex")
    else:
        print("No benchmark results found.")