aboutsummaryrefslogtreecommitdiff
path: root/optimize
diff options
context:
space:
mode:
authorMarvin Borner2024-01-21 13:17:54 +0100
committerMarvin Borner2024-01-21 14:52:05 +0100
commitd1813a10c682afca756250fbb6133bb0853e0054 (patch)
tree6f6c7bc21cf1e8d0f4ce07ec69607fdb268a271c /optimize
parent2e46b5875586dd4f7f69b7f6e708d55235ce29a1 (diff)
BLoC min tree size parameter optimizerHEADmain
Diffstat (limited to 'optimize')
-rwxr-xr-xoptimize36
1 files changed, 36 insertions, 0 deletions
diff --git a/optimize b/optimize
new file mode 100755
index 0000000..a70b936
--- /dev/null
+++ b/optimize
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+# finds optimal --min-size value for bloc
+
+target="blc"
+
+# remove files on exit
+trap 'rm -f "$file".bloc "$file".bloc."$target"; exit 0' EXIT SIGINT SIGTERM
+
+if [ $# -eq 0 ]; then
+ echo "Usage: $0 <file>"
+ exit 1
+fi
+
+file=$1
+
+function try {
+ bloc --from-blc -i "$file" -o "$file".bloc -m "$1"
+ blocade -i "$file".bloc -t "$target" -o "$file".bloc."$target"
+ size="$(stat -c %s "$file".bloc."$target")"
+}
+
+low=5
+high=100000
+best=100000000000000000
+while [ $low -lt $high ]; do
+ mid=$(((low + high) / 2))
+ try $mid
+ echo "$mid: $size"
+ if [ "$size" -le $best ]; then
+ best=$size
+ high=$((mid - 1))
+ else
+ low=$((mid + 1))
+ fi
+done