mirror of
https://github.com/cuberite/libdeflate.git
synced 2025-09-19 09:14:46 -04:00
Optimization
This commit is contained in:
parent
e3cfa7b5cd
commit
4c5d30387a
6
tools/optimization/block_split_params.txt
Normal file
6
tools/optimization/block_split_params.txt
Normal file
@ -0,0 +1,6 @@
|
||||
VARIABLE MIN INITIAL MAX
|
||||
BLOCK_SIZE_SHIFT 0 12 20
|
||||
BLOCK_CUTOFF 0 200 2000
|
||||
MIN_BLOCK_LENGTH 1000 10000 500000
|
||||
MAX_BLOCK_LENGTH 1000 300000 2000000
|
||||
OBSERVATIONS_PER_CHECK 10 512 10000
|
23
tools/optimization/optimize_block_split_params.r
Executable file
23
tools/optimization/optimize_block_split_params.r
Executable file
@ -0,0 +1,23 @@
|
||||
#!/usr/bin/Rscript
|
||||
|
||||
PARAMS = read.table("block_split_params.txt", header=TRUE, row.names=1)
|
||||
|
||||
fn = function(params) {
|
||||
|
||||
params = as.integer(params)
|
||||
params = pmax(params, PARAMS$MIN)
|
||||
params = pmin(params, PARAMS$MAX)
|
||||
|
||||
env = paste(rownames(PARAMS), "=", params, sep='', collapse=' ')
|
||||
|
||||
cat(env, "\n")
|
||||
|
||||
result = system(paste(env, "./try_block_params.sh"), intern=TRUE)
|
||||
stopifnot(attr(result, "status") == 0)
|
||||
result = as.numeric(result)
|
||||
cat(result, "\n")
|
||||
return(result)
|
||||
}
|
||||
|
||||
result = optim(PARAMS$INITIAL, fn)
|
||||
print(result)
|
15
tools/optimization/results.txt
Normal file
15
tools/optimization/results.txt
Normal file
@ -0,0 +1,15 @@
|
||||
testdata -6:
|
||||
BLOCK_SIZE_SHIFT=20 BLOCK_CUTOFF=182 MIN_BLOCK_LENGTH=8071 MAX_BLOCK_LENGTH=299707 OBSERVATIONS_PER_CHECK=553
|
||||
8727764
|
||||
|
||||
moby.txt -12:
|
||||
BLOCK_SIZE_SHIFT=20 BLOCK_CUTOFF=239 MIN_BLOCK_LENGTH=36336 MAX_BLOCK_LENGTH=303025 OBSERVATIONS_PER_CHECK=772
|
||||
476063
|
||||
|
||||
silesia -6:
|
||||
BLOCK_SIZE_SHIFT=20 BLOCK_CUTOFF=189 MIN_BLOCK_LENGTH=10225 MAX_BLOCK_LENGTH=323665 OBSERVATIONS_PER_CHECK=556
|
||||
67927205
|
||||
|
||||
0b7d62c8-1ae5-11e6-818e-ca27821f62e9.png -12:
|
||||
BLOCK_SIZE_SHIFT=20 BLOCK_CUTOFF=193 MIN_BLOCK_LENGTH=21726 MAX_BLOCK_LENGTH=300470 OBSERVATIONS_PER_CHECK=517
|
||||
596524
|
20
tools/optimization/try_block_params.sh
Executable file
20
tools/optimization/try_block_params.sh
Executable file
@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
topdir="$(dirname "$0")/../.."
|
||||
|
||||
git checkout -f "$topdir/src" > /dev/null
|
||||
|
||||
sed -i -e \
|
||||
"
|
||||
s/\<block_size >> 12\>/block_size >> $BLOCK_SIZE_SHIFT/
|
||||
s/\<200 \* stats->num_observations/$BLOCK_CUTOFF * stats->num_observations/
|
||||
s/#define MIN_BLOCK_LENGTH.*$/#define MIN_BLOCK_LENGTH $MIN_BLOCK_LENGTH/
|
||||
s/#define MAX_BLOCK_LENGTH.*$/#define MAX_BLOCK_LENGTH $MAX_BLOCK_LENGTH/
|
||||
s/num_new_observations < 512\>/num_new_observations < $OBSERVATIONS_PER_CHECK/
|
||||
" \
|
||||
"$topdir/src/deflate_compress.c"
|
||||
|
||||
make -C "$topdir" -j BUILD_BENCHMARK_PROGRAM=yes > /dev/null
|
||||
"$topdir/benchmark" -l 12 -s 100000000 $HOME/data/testdata | grep Compressed | cut -f 4 -d ' '
|
Loading…
x
Reference in New Issue
Block a user