-
Notifications
You must be signed in to change notification settings - Fork 123
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #51 from epage/bench
perf: Benchmark 0.1
- Loading branch information
Showing
17 changed files
with
1,353 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,304 @@ | ||
#!/usr/bin/env bash | ||
set -e | ||
|
||
current_dir=`dirname $(readlink -f $0)` | ||
|
||
base_dir="/tmp/benchsuite" | ||
if [[ $# -ge 1 ]]; then | ||
base_dir=$1 | ||
fi | ||
mkdir -p $base_dir | ||
pushd $base_dir | ||
base_dir=. | ||
|
||
|
||
machine="$HOSTNAME" | ||
if [[ $# -ge 2 ]]; then | ||
machine=$2 | ||
fi | ||
|
||
current_day=`date +%Y-%m-%d` | ||
report_prefix=$current_dir/runs/$current_day-$machine | ||
report_path=$report_prefix.md | ||
mkdir -p `dirname $report_path` | ||
|
||
echo "" > $report_path | ||
echo "# Spell Check Shootout" >> $report_path | ||
echo "" >> $report_path | ||
echo "These are the results as of $current_day" >> $report_path | ||
echo "" >> $report_path | ||
echo "Command:" >> $report_path | ||
echo "\`\`\`bash" >> $report_path | ||
echo "$ $0 $base_dir $machine" >> $report_path | ||
echo "\`\`\`" >> $report_path | ||
echo "" >> $report_path | ||
|
||
linux_clean_path=`$current_dir/fixtures/linux_clean.sh path $base_dir` | ||
linux_clean_version=`$current_dir/fixtures/linux_clean.sh version $base_dir` | ||
|
||
linux_built_path=`$current_dir/fixtures/linux_built.sh path $base_dir` | ||
linux_built_version=`$current_dir/fixtures/linux_built.sh version $base_dir` | ||
|
||
ripgrep_clean_path=`$current_dir/fixtures/ripgrep_clean.sh path $base_dir` | ||
ripgrep_clean_version=`$current_dir/fixtures/ripgrep_clean.sh version $base_dir` | ||
|
||
ripgrep_built_path=`$current_dir/fixtures/ripgrep_built.sh path $base_dir` | ||
ripgrep_built_version=`$current_dir/fixtures/ripgrep_built.sh version $base_dir` | ||
|
||
subtitles_en_path=`$current_dir/fixtures/subtitles_en.sh path $base_dir` | ||
subtitles_en_version=`$current_dir/fixtures/subtitles_en.sh version $base_dir` | ||
|
||
subtitles_en_small_path=`$current_dir/fixtures/subtitles_en_small.sh path $base_dir` | ||
subtitles_en_small_version=`$current_dir/fixtures/subtitles_en_small.sh version $base_dir` | ||
|
||
subtitles_ru_path=`$current_dir/fixtures/subtitles_ru.sh path $base_dir` | ||
subtitles_ru_version=`$current_dir/fixtures/subtitles_ru.sh version $base_dir` | ||
|
||
subtitles_ru_small_path=`$current_dir/fixtures/subtitles_ru_small.sh path $base_dir` | ||
subtitles_ru_small_version=`$current_dir/fixtures/subtitles_ru_small.sh version $base_dir` | ||
echo "" >> $report_path | ||
|
||
|
||
echo "Spell checkers:" >> $report_path | ||
rg_path=`$current_dir/uut/rg.sh path $base_dir` | ||
rg_version=`$current_dir/uut/rg.sh version $base_dir` | ||
if [[ -z $rg_path ]]; then | ||
>&2 echo "Warning: rg uut is unavailable" | ||
echo "- rg: N/A" >> $report_path | ||
else | ||
echo "- $rg_version" >> $report_path | ||
fi | ||
|
||
typos_path=`$current_dir/uut/typos.sh path $base_dir` | ||
typos_version=`$current_dir/uut/typos.sh version $base_dir` | ||
if [[ -z $typos_path ]]; then | ||
>&2 echo "Warning: typos uut is unavailable" | ||
echo "- typos: N/A" >> $report_path | ||
else | ||
echo "- $typos_version" >> $report_path | ||
fi | ||
|
||
misspell_rs_path=`$current_dir/uut/misspell_rs.sh path $base_dir` | ||
misspell_rs_version=`$current_dir/uut/misspell_rs.sh version $base_dir` | ||
if [[ -z $misspell_rs_path ]]; then | ||
>&2 echo "Warning: misspell_rs uut is unavailable" | ||
echo "- misspell_rs: N/A" >> $report_path | ||
else | ||
echo "- $misspell_rs_version" >> $report_path | ||
fi | ||
|
||
misspell_go_path=`$current_dir/uut/misspell_go.sh path $base_dir` | ||
misspell_go_version=`$current_dir/uut/misspell_go.sh version $base_dir` | ||
if [[ -z $misspell_go_path ]]; then | ||
>&2 echo "Warning: misspell_go uut is unavailable" | ||
echo "- misspell_go: N/A" >> $report_path | ||
else | ||
echo "- $misspell_go_version" >> $report_path | ||
fi | ||
|
||
codespell_path=`$current_dir/uut/codespell.sh path $base_dir` | ||
codespell_version=`$current_dir/uut/codespell.sh version $base_dir` | ||
if [[ -z $codespell_path ]]; then | ||
>&2 echo "Warning: codespell uut is unavailable" | ||
echo "- codespell: N/A" >> $report_path | ||
else | ||
echo "- $codespell_version" >> $report_path | ||
fi | ||
|
||
scspell_path=`$current_dir/uut/scspell.sh path $base_dir` | ||
scspell_version=`$current_dir/uut/scspell.sh version $base_dir` | ||
if [[ -z $scspell_path ]]; then | ||
>&2 echo "Warning: scspell uut is unavailable" | ||
echo "- scspell: N/A" >> $report_path | ||
else | ||
echo "- $scspell_version" >> $report_path | ||
fi | ||
echo "" >> $report_path | ||
|
||
|
||
echo "## linux_clean fixture" >> $report_path | ||
echo "" >> $report_path | ||
if [[ -z $linux_clean_path ]]; then | ||
>&2 echo "Warning: linux_clean fixture is unavailable" | ||
echo "N/A" >> $report_path | ||
else | ||
echo "linux_clean: $linux_clean_version" >> $report_path | ||
echo "" >> $report_path | ||
rg_command="" | ||
if [[ ! -z $rg_path ]]; then | ||
rg_command="$rg_path bin $linux_clean_path" | ||
fi | ||
typos_command="" | ||
if [[ ! -z $typos_path ]]; then | ||
typos_command="$typos_path $linux_clean_path" | ||
fi | ||
misspell_rs_command="" | ||
if [[ ! -z $misspell_rs_path ]]; then | ||
misspell_rs_command="$misspell_rs_path $linux_clean_path" | ||
fi | ||
misspell_go_command="" | ||
if [[ ! -z $misspell_go_path ]]; then | ||
misspell_go_command="$misspell_go_path $linux_clean_path" | ||
fi | ||
# Skipping scspell, doesn't work on directories | ||
codespell_command="" | ||
if [[ ! -z $codespell_path ]]; then | ||
codespell_command="$codespell_path $linux_clean_path" | ||
fi | ||
hyperfine --warmup 1 -i --export-json $report_prefix-rg.json --export-markdown $report_prefix-rg.md "$rg_command" "$typos_command" "$misspell_rs_command" "$misspell_go_command" "$codespell_command" | ||
cat $report_prefix-rg.md >> $report_path | ||
fi | ||
echo "" >> $report_path | ||
|
||
|
||
echo "## linux_built fixture" >> $report_path | ||
echo "" >> $report_path | ||
if [[ -z $linux_built_path ]]; then | ||
>&2 echo "Warning: linux_built fixture is unavailable" | ||
echo "N/A" >> $report_path | ||
else | ||
echo "linux_built: $linux_built_version" >> $report_path | ||
echo "" >> $report_path | ||
rg_command="" | ||
if [[ ! -z $rg_path ]]; then | ||
rg_command="$rg_path bin $linux_built_path" | ||
fi | ||
typos_command="" | ||
if [[ ! -z $typos_path ]]; then | ||
typos_command="$typos_path $linux_built_path" | ||
fi | ||
misspell_rs_command="" | ||
if [[ ! -z $misspell_rs_path ]]; then | ||
misspell_rs_command="$misspell_rs_path $linux_built_path" | ||
fi | ||
misspell_go_command="" | ||
if [[ ! -z $misspell_go_path ]]; then | ||
misspell_go_command="$misspell_go_path $linux_built_path" | ||
fi | ||
# Skipping scspell, doesn't work on directories | ||
codespell_command="" | ||
if [[ ! -z $codespell_path ]]; then | ||
codespell_command="$codespell_path $linux_built_path" | ||
fi | ||
hyperfine --warmup 1 -i --export-json $report_prefix-rg.json --export-markdown $report_prefix-rg.md "$rg_command" "$typos_command" "$misspell_rs_command" "$misspell_go_command" "$codespell_command" | ||
cat $report_prefix-rg.md >> $report_path | ||
fi | ||
echo "" >> $report_path | ||
|
||
|
||
if [[ -z $subtitles_en_path ]]; then | ||
>&2 echo "Warning: subtitles_en fixture is unavailable" | ||
fi | ||
|
||
|
||
if [[ -z $subtitles_en_small_path ]]; then | ||
>&2 echo "Warning: subtitles_en_small fixture is unavailable" | ||
fi | ||
|
||
|
||
echo "## subtitles_ru_small fixture" >> $report_path | ||
echo "" >> $report_path | ||
if [[ -z $subtitles_ru_small_path ]]; then | ||
>&2 echo "Warning: subtitles_ru_small fixture is unavailable" | ||
echo "N/A" >> $report_path | ||
else | ||
echo "subtitles_ru_small: $subtitles_ru_small_version" >> $report_path | ||
echo "" >> $report_path | ||
rg_command="" | ||
if [[ ! -z $rg_path ]]; then | ||
rg_command="$rg_path bin $subtitles_ru_small_path" | ||
fi | ||
typos_command="" | ||
if [[ ! -z $typos_path ]]; then | ||
typos_command="$typos_path $subtitles_ru_small_path" | ||
fi | ||
misspell_rs_command="" | ||
if [[ ! -z $misspell_rs_path ]]; then | ||
misspell_rs_command="$misspell_rs_path $subtitles_ru_small_path" | ||
fi | ||
misspell_go_command="" | ||
if [[ ! -z $misspell_go_path ]]; then | ||
misspell_go_command="$misspell_go_path $subtitles_ru_small_path" | ||
fi | ||
scspell_command="" | ||
if [[ ! -z $scspell_path ]]; then | ||
scspell_command="$scspell_path $subtitles_ru_small_path" | ||
fi | ||
codespell_command="" | ||
if [[ ! -z $codespell_path ]]; then | ||
codespell_command="$codespell_path $subtitles_ru_small_path" | ||
fi | ||
hyperfine --warmup 1 -i --export-json $report_prefix-rg.json --export-markdown $report_prefix-rg.md "$rg_command" "$typos_command" "$misspell_rs_command" "$misspell_go_command" "$scspell_command" "$codespell_command" | ||
cat $report_prefix-rg.md >> $report_path | ||
fi | ||
echo "" >> $report_path | ||
|
||
|
||
echo "## ripgrep_clean fixture" >> $report_path | ||
echo "" >> $report_path | ||
if [[ -z $ripgrep_clean_path ]]; then | ||
>&2 echo "Warning: ripgrep_clean fixture is unavailable" | ||
echo "N/A" >> $report_path | ||
else | ||
echo "ripgrep_clean: $ripgrep_clean_version" >> $report_path | ||
echo "" >> $report_path | ||
rg_command="" | ||
if [[ ! -z $rg_path ]]; then | ||
rg_command="$rg_path bin $ripgrep_clean_path" | ||
fi | ||
typos_command="" | ||
if [[ ! -z $typos_path ]]; then | ||
typos_command="$typos_path $ripgrep_clean_path" | ||
fi | ||
misspell_rs_command="" | ||
if [[ ! -z $misspell_rs_path ]]; then | ||
misspell_rs_command="$misspell_rs_path $ripgrep_clean_path" | ||
fi | ||
misspell_go_command="" | ||
if [[ ! -z $misspell_go_path ]]; then | ||
misspell_go_command="$misspell_go_path $ripgrep_clean_path" | ||
fi | ||
# Skipping scspell, doesn't work on directories | ||
codespell_command="" | ||
if [[ ! -z $codespell_path ]]; then | ||
codespell_command="$codespell_path $ripgrep_clean_path" | ||
fi | ||
hyperfine --warmup 1 -i --export-json $report_prefix-rg.json --export-markdown $report_prefix-rg.md "$rg_command" "$typos_command" "$misspell_rs_command" "$misspell_go_command" "$codespell_command" | ||
cat $report_prefix-rg.md >> $report_path | ||
fi | ||
echo "" >> $report_path | ||
|
||
|
||
echo "## ripgrep_built fixture" >> $report_path | ||
echo "" >> $report_path | ||
if [[ -z $ripgrep_built_path ]]; then | ||
>&2 echo "Warning: ripgrep_built fixture is unavailable" | ||
echo "N/A" >> $report_path | ||
else | ||
echo "ripgrep_built: $ripgrep_built_version" >> $report_path | ||
echo "" >> $report_path | ||
rg_command="" | ||
if [[ ! -z $rg_path ]]; then | ||
rg_command="$rg_path bin $ripgrep_built_path" | ||
fi | ||
typos_command="" | ||
if [[ ! -z $typos_path ]]; then | ||
typos_command="$typos_path $ripgrep_built_path" | ||
fi | ||
misspell_rs_command="" | ||
if [[ ! -z $misspell_rs_path ]]; then | ||
misspell_rs_command="$misspell_rs_path $ripgrep_built_path" | ||
fi | ||
misspell_go_command="" | ||
if [[ ! -z $misspell_go_path ]]; then | ||
misspell_go_command="$misspell_go_path $ripgrep_built_path" | ||
fi | ||
# Skipping scspell, doesn't work on directories | ||
codespell_command="" | ||
if [[ ! -z $codespell_path ]]; then | ||
codespell_command="$codespell_path $ripgrep_built_path" | ||
fi | ||
hyperfine --warmup 1 -i --export-json $report_prefix-rg.json --export-markdown $report_prefix-rg.md "$rg_command" "$typos_command" "$misspell_rs_command" "$misspell_go_command" "$codespell_command" | ||
cat $report_prefix-rg.md >> $report_path | ||
fi | ||
echo "" >> $report_path |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
#!/usr/bin/env bash | ||
# Pre-reqs: | ||
# - git | ||
# - able to build a Linux kernel | ||
# - apt install libelf-dev, bc | ||
set -e | ||
|
||
FIXTURE_DIR="linux_built" | ||
|
||
function cpucount() { | ||
echo `grep -c ^processor /proc/cpuinfo` | ||
} | ||
|
||
if [[ $# -eq 0 ]]; then | ||
exit 1 | ||
fi | ||
command=$1 | ||
|
||
base_dir="/tmp/benchsuite" | ||
if [[ $# -ge 2 ]]; then | ||
base_dir=$2 | ||
fi | ||
|
||
current_dir=`dirname $(readlink -f $0)` | ||
root_dir="${base_dir}/$FIXTURE_DIR" | ||
out_file="$root_dir" | ||
log_path="${base_dir}/$FIXTURE_DIR.log" | ||
|
||
function path() { | ||
if [[ -e $out_file ]]; then | ||
echo $out_file | ||
fi | ||
} | ||
|
||
function clear() { | ||
rm -Rf ${root_dir} ${log_path} | ||
} | ||
|
||
function download() { | ||
if [[ ! -e $out_file ]]; then | ||
echo "Downloading $FIXTURE_DIR" >> ${log_path} | ||
in_file=`$current_dir/linux_clean.sh download $base_dir` | ||
cp -R $in_file $out_file | ||
# We want to build the kernel because the process of building it produces | ||
# a lot of junk in the repository that a search tool probably shouldn't | ||
# touch. | ||
pushd $root_dir >> ${log_path} | ||
make defconfig >> ${log_path} | ||
make -j $(cpucount) >> ${log_path} | ||
popd >> ${log_path} | ||
fi | ||
} | ||
|
||
function version() { | ||
if [[ -e $out_file ]]; then | ||
pushd $root_dir >> ${log_path} | ||
echo "linux `git rev-parse HEAD`" | ||
popd >> ${log_path} | ||
fi | ||
} | ||
|
||
case $command in | ||
path) | ||
echo $(path) | ||
;; | ||
clear) | ||
echo $(clear) | ||
;; | ||
version) | ||
echo $(version) | ||
;; | ||
download) | ||
download | ||
echo $(path) | ||
;; | ||
*) | ||
>&2 echo "Invalid command: $command" | ||
exit 1 | ||
;; | ||
esac |
Oops, something went wrong.