12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/bin/bash
- RUN_TIMES=27
- tmpdir=$(mktemp --tmpdir -d clsync-hl-bench.XXXXXXXXXX)
- configuration() {
- git checkout -- configuration.h
- for regex in $@; do
- sed -i configuration.h -e "$regex"
- done
- }
- configure() {
- ./configure -C $@ >/dev/null 2>/dev/null || ./configure $@ || exit 1
- }
- run() {
- time ./clsync -Mso -S'doc/devel/thread-splitting/benchmark-synchandler.so' --have-recursive-sync --max-iterations 1 -W ~/clsync-test $@ || exit 1
- }
- benchmark() {
- make clean all
- HL_INITIAL=$(awk '{if ($2 == "HL_LOCK_TRIES_INITIAL") print $3}' < configuration.h)
- HL_AUTO=$(gcc -x c - -o "$tmpdir/hl_auto.bin" << 'EOF'
- #include <stdio.h>
- #include "configuration.h"
- int main() {
- #ifdef HL_LOCK_TRIES_AUTO
- printf("auto\n");
- #else
- printf("noauto\n");
- #endif
- return 0;
- }
- EOF
- "$tmpdir/hl_auto.bin"
- rm -f "$tmpdir/hl_auto.bin"
- )
- CONFIGURE=$(awk '{if ($2 == "./configure") {$1=""; $2="";print $0; exit}}' < config.log)
- hash="$*|$CONFIGURE"
- if [[ "$HL_AUTO" == "auto" ]]; then
- hash="$hash|$HL_AUTO"
- else
- hash="$hash|$HL_INITIAL"
- fi
- i=0
- while [[ "$i" -lt "$RUN_TIMES" ]]; do
- run -d1 $@ >> "$tmpdir/benchmark.log-$hash" 2>> "$tmpdir/benchmark.errlog-$hash"
- i=$(( i + 1 ))
- done
- }
- gcc -I. -shared -o doc/devel/thread-splitting/benchmark-synchandler.so -fPIC -D_DEBUG_SUPPORT doc/devel/thread-splitting/benchmark-synchandler.c
- configuration 's|SLEEP_SECONDS.*$|SLEEP_SECONDS 0|g'
- for args in "" "--thread-splitting"; do
- #for args in "--thread-splitting"; do
- configure --enable-debug=yes
- benchmark $args
- configure --enable-highload-locks --enable-debug=no
- benchmark $args
- configure --enable-highload-locks --enable-debug=yes
- benchmark $args
- configure --enable-highload-locks --enable-debug=force
- benchmark $args
- done
- configure --enable-highload-locks --enable-debug=yes
- benchmark
- interval=1;
- while [[ "$interval" -le "2147483648" ]]; do
- configuration 's|SLEEP_SECONDS.*$|SLEEP_SECONDS 0|g' 's|#define HL_LOCK_TRIES_AUTO|//#define HL_LOCK_TRIES_AUTO|g' "s|HL_LOCK_TRIES_INITIAL.*$|HL_LOCK_TRIES_INITIAL $interval|g"
- benchmark --thread-splitting
- interval=$(( interval * 2 ))
- done
- rm -f doc/devel/thread-splitting/benchmark-synchandler.so
|