From 78987f7ba3ebe6513f27e4d66fc8259de1b5605b Mon Sep 17 00:00:00 2001 From: Noah Hellman Date: Tue, 31 Jan 2023 22:51:16 +0100 Subject: [PATCH] add bench target and scripts to run simple benchmark --- Cargo.toml | 1 + Makefile | 8 ++++++++ benches/bench.sh | 19 +++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100755 benches/bench.sh diff --git a/Cargo.toml b/Cargo.toml index 0ccbd04..b5c3f97 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,7 @@ documentation = "https://docs.rs/jotdown" exclude = [ ".gitmodules", "Makefile", + "benches", "modules", "tests", ] diff --git a/Makefile b/Makefile index 2636af6..5f1b281 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,13 @@ suite_bench: (cd tests/bench && make) cargo test --features suite_bench +.PHONY: bench +bench: + git submodule update --init modules/djot.js + for f in $$(find modules/djot.js/bench -name '*.dj' | xargs basename -a); do \ + ln -fs ../modules/djot.js/bench/$$f benches/$$f; \ + done + clean: cargo clean git submodule deinit -f --all @@ -25,3 +32,4 @@ clean: (cd tests/suite && make clean) rm -f tests/bench/*.dj (cd tests/bench && make clean) + rm -f benches/*.dj diff --git a/benches/bench.sh b/benches/bench.sh new file mode 100755 index 0000000..165e2a9 --- /dev/null +++ b/benches/bench.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +cmd=$* + +test_html=$(echo "abc" | $cmd | tr -d ' \n') +[ "$test_html" != "

abc

" ] && echo "failed simple gen: '$test_html'" && exit 1 + +for f in *.dj; do + tmp=$(mktemp) + for i in $(seq 500); do + cat "$f" >> $tmp + done + t=$(cat "$tmp" \ + | (LANG=C time -p $cmd > /dev/null) 2>&1 \ + | grep real \ + | awk '{print $2}') + printf "$t\t$f\n" + rm -f "$tmp" +done | sort -rn