Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »comptest.bash: (spouštění na vlastní nebezpečí)
#!/bin/bash #comprimation methods/commands #for CMDA[] eval is used TXTA=() CMDA=() EXTA=() #bzip2 and gzip TXTA+=( 'gz -9' ) EXTA+=( '.gz' ) CMDA+=( "gzip -9 '[file]'" ) TXTA+=( 'bz2 -9' ) EXTA+=( '.bz2' ) CMDA+=( "bzip2 -9 '[file]'" ) TXTA+=( 'gz.bz2 -9 -9' ) EXTA+=( '.gz.bz2' ) CMDA+=( "gzip -9 -c '[file]' | bzip2 -9 > '[file]${EXTA[2]}'" ) TXTA+=( 'bz2.gz -9 -9' ) EXTA+=( '.bz2.gz' ) CMDA+=( "bzip2 -9 -c '[file]' | gzip -9 > '[file]${EXTA[3]}'" ) #7zip TXTA+=( '7z' ) EXTA+=( '.7z' ) CMDA+=( "7z a -bd '[file]${EXTA[4]}' '[file]'" ) TXTA+=( '7z.gz -txz -9' ) EXTA+=( '.7z.gz' ) CMDA+=( "7z a -bd -an -txz -so '[file]' | gzip -9 > '[file]${EXTA[5]}'" ) TXTA+=( '7z.bz2 -txz -9' ) EXTA+=( '.7z.bz2' ) CMDA+=( "7z a -bd -an -txz -so '[file]' | bzip2 -9 > '[file]${EXTA[6]}'" ) TXTA+=( 'gz.7z -txz -9' ) EXTA+=( '.gz.7z' ) CMDA+=( "gzip -9 -c '[file]' | 7z a -bd -txz -si '[file]${EXTA[7]}'" ) TXTA+=( 'bz2.7z -9 -txz' ) EXTA+=( '.bz2.7z' ) CMDA+=( "bzip2 -9 -c '[file]' | 7z a -bd -txz -si '[file]${EXTA[8]}'" ) TXTA+=( '7z.gz.bz2 -txz -9 -9' ) EXTA+=( '.7z.gz.bz2' ) CMDA+=( "7z a -bd -an -txz -so '[file]' | gzip -9 | bzip2 -9 > '[file]${EXTA[9]}'" ) TXTA+=( '7z.bz2.gz -txz -9 -9' ) EXTA+=( '.7z.bz2.gz' ) CMDA+=( "7z a -bd -an -txz -so '[file]' | bzip2 -9 | gzip -9 > '[file]${EXTA[10]}'" ) TXTA+=( 'gz.7z.bz2 -9 -txz -9' ) EXTA+=( '.gz.7z.bz2' ) CMDA+=( "gzip -9 -c '[file]' | 7z a -bd -an -txz -si -so | bzip2 -9 > '[file]${EXTA[11]}'" ) TXTA+=( 'bz2.7z.gz -9 -txz -9' ) EXTA+=( '.bz2.7z.gz' ) CMDA+=( "bzip2 -9 -c '[file]' | 7z a -bd -an -txz -si -so | gzip -9 > '[file]${EXTA[12]}'" ) TXTA+=( 'gz.bz2.7z -9 -9 -txz' ) EXTA+=( '.gz.bz2.7z' ) CMDA+=( "gzip -9 -c '[file]' | bzip2 -9 | 7z a -bd -txz -si '[file]${EXTA[13]}'" ) TXTA+=( 'bz2.gz.7z -9 -9 -txz' ) EXTA+=( '.bz2.gz.7z' ) CMDA+=( "bzip2 -9 -c '[file]' | gzip -9 | 7z a -bd -txz -si '[file]${EXTA[14]}'" ) TXTA+=( 'gz -1' ) EXTA+=( '.1.gz' ) CMDA+=( "gzip -1 -c '[file]' > '[file].1.gz'" ) TXTA+=( 'bz2 -1' ) EXTA+=( '.1.bz2' ) CMDA+=( "bzip2 -1 -c '[file]' > '[file].1.bz2'" ) TXTA+=( 'gz -2' ) EXTA+=( '.2.gz' ) CMDA+=( "gzip -2 -c '[file]' > '[file].2.gz'" ) TXTA+=( 'bz2 -2' ) EXTA+=( '.2.bz2' ) CMDA+=( "bzip2 -2 -c '[file]' > '[file].2.bz2'" ) TXTA+=( 'gz -3' ) EXTA+=( '.3.gz' ) CMDA+=( "gzip -3 -c '[file]' > '[file].3.gz'" ) TXTA+=( 'bz2 -3' ) EXTA+=( '.3.bz2' ) CMDA+=( "bzip2 -3 -c '[file]' > '[file].3.bz2'" ) TXTA+=( 'gz -4' ) EXTA+=( '.4.gz' ) CMDA+=( "gzip -4 -c '[file]' > '[file].4.gz'" ) TXTA+=( 'bz2 -4' ) EXTA+=( '.4.bz2' ) CMDA+=( "bzip2 -4 -c '[file]' > '[file].4.bz2'" ) TXTA+=( 'gz -5' ) EXTA+=( '.5.gz' ) CMDA+=( "gzip -5 -c '[file]' > '[file].5.gz'" ) TXTA+=( 'bz2 -5' ) EXTA+=( '.5.bz2' ) CMDA+=( "bzip2 -5 -c '[file]' > '[file].5.bz2'" ) TXTA+=( 'gz -6' ) EXTA+=( '.6.gz' ) CMDA+=( "gzip -6 -c '[file]' > '[file].6.gz'" ) TXTA+=( 'bz2 -6' ) EXTA+=( '.6.bz2' ) CMDA+=( "bzip2 -6 -c '[file]' > '[file].6.bz2'" ) TXTA+=( 'gz -7' ) EXTA+=( '.7.gz' ) CMDA+=( "gzip -7 -c '[file]' > '[file].7.gz'" ) TXTA+=( 'bz2 -7' ) EXTA+=( '.7.bz2' ) CMDA+=( "bzip2 -7 -c '[file]' > '[file].7.bz2'" ) TXTA+=( 'gz -8' ) EXTA+=( '.8.gz' ) CMDA+=( "gzip -8 -c '[file]' > '[file].8.gz'" ) TXTA+=( 'bz2 -8' ) EXTA+=( '.8.bz2' ) CMDA+=( "bzip2 -8 -c '[file]' > '[file].8.bz2'" ) TXTA+=( 'lrzip -L 9' ) EXTA+=( '.lrz' ) CMDA+=( "lrzip -L 9 '[file]'" ) TXTA+=( 'rzip -9' ) EXTA+=( '.rz' ) CMDA+=( "rzip -9 '[file]'" ) #here you can add item(s) begin # index 33 #here you can add item(s) end TAR_CMD=( "tar -cf" "tar -rf" ) #default values TESTS=( 0 1 2 3 ) TMP='/tmp' TMPDIR='comptest' INPUTTYPE="-10" VERBOSE=0 VERBOSE_REPORT=0 USE_TIME=0 STOPIT=0 LEAVE_COMP=0 SAVE_FILENAME='' OPEN_FILENAME='' TAR_FILENAME='' TAR_TMP_DIR="TAR-TMP-DIR_0123456789QWX_$(date '+%s')" SIZE_OF_BLOCK='4096' #do not change ADD_SIZE_TO_BLOCK, it was a good idea but has been forgotten :( ADD_SIZE_TO_BLOCK='0' REPORT_SPEED_W='0.5' REPORT_RATIO_W='0.5' REPORT_RATIO_MIN='0.75' REPORT_SPEED_MIN='4194304' GRAPH_POINT='[letter]' GRAPH_POINT_L='0' BCCMD="$( which bc )" if [ "$?" -ne "0" ]; then echo -e "\n'bc' should be installed\n" >&2 exit 3 fi function waitforkey() { if [ "$STOPIT" -eq "1" ]; then read -p "Press any key to continue... " -n1 -s echo '' fi } function waitforkey2() { if [ "$STOPIT" -eq "1" ]; then read -n1 -s echo '' fi } #getopt parse ----------------------- while getopts ":vmn:t:T:u:hb:fir:R:s:S:cIw:o:e:dLl" opt; do case $opt in n) if [ "$OPTARG" == "gz" ]; then TESTS=( 15 17 19 21 23 25 27 29 0 ) elif [ "$OPTARG" == "bz2" ]; then TESTS=( 16 18 20 22 24 26 28 30 1 ) elif [ "$OPTARG" == "gzbz2" ]; then TESTS=( 15 17 19 21 23 25 27 29 0 16 18 20 22 24 26 28 30 1 ) elif [ "${OPTARG}" == "allbest1" ]; then TESTS=( 0 1 31 32 ) elif [ "${OPTARG:0:1}" == "e" ]; then TESTS=( ${OPTARG:1} ) else TESTS=() cnt="$((${OPTARG}+1))" if [ ${cnt} -gt ${#CMDA[@]} ]; then cnt="${#CMDA[@]}" fi for(( i=0; i < "$cnt"; i++ )); do TESTS+=( $i ) done fi if [ ${#TESTS[@]} -lt "1" ]; then echo 'Ilegal -n value.' >&2 exit 1 fi ;; t) TMP="$OPTARG" if [ ! -d ${TMP} ]; then echo "-t Temp path '${TMP}' doesn't exist." >&2 exit 1 fi ;; T) TMPDIR="$OPTARG" ;; u) TAR_TMP_DIR="$OPTARG" ;; m) USE_TIME=1 ;; v) VERBOSE=1 ;; c) GRAPH_POINT="\e[7m[letter]\033[0m" GRAPH_POINT_L='12' ;; b) SIZE_OF_BLOCK="$( echo "$OPTARG+0" | $BCCMD )" if [ -z "$SIZE_OF_BLOCK" ]; then echo "Ilegal -b value." >&2 exit 1 fi if [ "$SIZE_OF_BLOCK" -lt "1" ]; then echo "Ilegal -b value." >&2 exit 1 fi ;; #B) # ADD_SIZE_TO_BLOCK="$( echo "$OPTARG+0" | $BCCMD )" # if [ -z "$ADD_SIZE_TO_BLOCK" ]; then # echo "Ilegal -B value." >&2 # exit 1 # fi # if [ "$ADD_SIZE_TO_BLOCK" -lt "0" ]; then # echo "Ilegal -B value." >&2 # exit 1 # fi # ;; r) REPORT_RATIO_W="$( echo "x=$OPTARG+0; if(x>0&&x<1) x;" | $BCCMD )" if [ -z "$REPORT_RATIO_W" ]; then echo 'Ilegal -r value (0<x<1).' >&2 exit 1 fi ;; R) REPORT_RATIO_MIN="$( echo "x=$OPTARG+0; if(x>0&&x<1) x;" | $BCCMD )" if [ -z "$REPORT_RATIO_MIN" ]; then echo 'Ilegal -R value (0<x<1).' >&2 exit 1 fi ;; s) REPORT_SPEED_W="$( echo "x=$OPTARG+0; if(x>0&&x<1) x;" | $BCCMD )" if [ -z "$REPORT_SPEED_W" ]; then echo 'Ilegal -s value \(0<x<1\).' >&2 exit 1 fi ;; S) REPORT_SPEED_MIN="$( echo "x=$OPTARG+0; if(x>1) x;" | $BCCMD )" if [ -z "$REPORT_SPEED_MIN" ]; then echo 'Ilegal -S value (x>1).' >&2 exit 1 fi ;; i) INPUTTYPE="-2" break ;; f) INPUTTYPE="-1" shift $(( OPTIND - 1 )) break ;; o) INPUTTYPE="-3" OPEN_FILENAME="$OPTARG" if [ ! -f "${OPEN_FILENAME}" ]; then echo "Ilegal -o value, file '${OPEN_FILENAME}' doesn't exist." >&2 exit 1 fi break ;; I) STOPIT=1 ;; l) LEAVE_COMP=1 ;; L) LEAVE_COMP=2 ;; e) TAR_FILENAME="$OPTARG" if [ -f "${TAR_FILENAME}" ]; then echo "Write report file -w '${TAR_FILENAME}' exists." >&2 exit fi ;; d) INPUTTYPE="-4" break ;; w) SAVE_FILENAME="$OPTARG" if [ -f "${SAVE_FILENAME}" ]; then echo "Write report file -w '${SAVE_FILENAME}' exists." >&2 exit fi ;; h) echo 'A small test of comprimation method performance.' echo ' By Igor Mega, ver: 0.12, license: BSD 3-clause' echo ' ' echo " This test create the 'comptest' directory (by default) in /tmp (by default)." echo ' All is done in this direcory (before/after a comprim command cd is used).' echo " Each tested file is copied (by 'cp') to this directory more times." echo ' Only on success all created and copied files in this directory are deleted.' echo " The create 'comptest' direcotry is deleted too (if is empty on finish)." echo ' WARMING:' echo ' If you break this test or an error si reached clean it yourself!' echo ' ' waitforkey echo ' comptest.bash [switch] -i or -f or -d or -o' echo ' -n X maximum number of test (default is -n "3" or -n "e0 1 2 3")' echo ' 0 = gzip -9' echo ' 1 = gzip -9, bzip2 -9' echo ' 2 = + gzip -9, bzip2 -9 combination [DEFAULT]' echo ' 4 = + 7z' echo ' 8 = + gz.7z, bz2.7z, 7z.gz, 7z.bz2 (-9)' echo ' 14 = + all 7z gz bz2 combination (-9 -9)' echo ' 30 = + gzip -1, bzip2 -1 to gzip -8, bzip2 -8' echo ' 31 = + lrzip -L 9' echo ' 32 = + rzip' echo ' -n gz = 1 16 18 20 22 24 26 28 30 (gzip -1 - gzip -9)' echo ' -n bz2 = 2 17 19 21 23 25 27 29 31 (bzip2 -1 - bzip2 -9)' echo ' -n gzbz2 = gz + bz2' echo ' -n allbest1 = gz -9, bz2 -9, 7z, lrzip -L 9, rzip -9' echo ' -n eX = X is space separated № of tests' echo ' ' waitforkey echo " -t 'temp/working direcotry path', have to exists, /tmp; is default" echo " -T 'test direcotry name', must not exists 'comptest' is default" echo " -u 'test tar-sub-direcotry name', used with '-d' action." echo " The name is unique name, same name directory as input." echo " mast not exist. Default: TAR-TMP-DIR_0123456789QWX_\$(date '+%s')" echo ' ' echo ' -v verbose process' echo " -w 'file name' of save results !full absolute path!" echo " The saved file can be read by -o action" echo " -e 'file name' of saved tar !full absolute path!" echo " The created tar file contains all files with full path!" echo ' -m use "time" for each test (use with -v)' echo ' ' echo " -l (small letter 'L') leave all compressed files" echo ' -L leave the best compreesed ratio file' echo ' ' waitforkey echo " -b 'size' of device block, default 4096" echo ' if -o is used this value is restored from -o file' echo ' ' echo " -s 'speed' \"weight\" abstract limit for slow/fast depends on mim-max internval," echo ' default 0.5' echo " -r 'ratio' \"weight\" abstract limit for bad/good depends on mim-max internval," echo ' default 0.5' echo " -R 'min' commpresion ratio for graph (dot vertical line) default 0.75." echo ' (compressed is 25 % smaller)' echo ' if the value is out of graph area the border of graph is interleaved ' echo ' by dots on right or left side' echo " -S 'min' speed for graph (tilda horizontal line) default 4194304 = 4MiB/sec." echo ' if the value is out of graph area the spaces on the left & right of ' echo ' text "compression ratio" is filled by ~ (on top or bottom)' echo ' ' waitforkey echo ' -i input full filename from stdin' echo ' USE AS LAST PARAMETR (next paramters are not used)' echo ' all no-regular-file will be ignored' echo ' !Use full absolute path!' echo ' -d input full direcory name from stdin' echo ' on each directory tar is used and the tar is tested' echo ' USE AS LAST PARAMETR (next paramters are not used)' echo ' all no-director will be ignored' echo ' !Use full absolute path!' echo ' -f input full filenames as next parameters' echo ' USE AS LAST PARAMETR (next paramters are the full file names)' echo ' all no-regular-file is ignored' echo ' !Use full absolute path!' echo ' -o file name, read saved result file - no test, show result only' echo ' USE AS LAST PARAMETR (next paramters is the file name only)' echo ' ' echo ' -I stop each max 25 lines (for help use it as the first parametr)' echo ' -c use invertcolor in graph' waitforkey echo ' ' echo ' Example:' echo ' comptest.bash -f fullfilename fullfilename fullfilename' echo ' or' echo ' find ./* -type f -exec readlink -f {} \; | ./comptest.bash -i' echo ' or' echo ' find /fullpath/dir/ -midepth 1 maxdepth 1 -type d | ./comptest.bash -d' exit 0 ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; :) echo "Option -$OPTARG requires an argument." >&2 exit 1 ;; esac done if [ ! -d "${TMP}" ]; then echo "Use -t, Temp path '${TMP}' doesn't exist." >&2 exit 1 fi if [ -d "${TMP}/${TMPDIR}" ]; then echo "Use -T, Testing directory '${TMPDIR}' already exist (Maybe it is an artefact from an unfinished test)." >&2 exit 1 fi if [ "${INPUTTYPE}" -lt "-4" ]; then echo "Use -i or -f or -d or -o param, or -h for help." >&2 exit 1 fi #Functions ----------------------- HLP_BC_FORMAT_OUT_NUMBER4='if(x<1000) print " "; if(x<100) print " "; if(x<10) print " "; if(x<1) print 0; x' HLP_BC_FORMAT_OUT_NUMBER4INT='if(x<1000) print " "; if(x<100) print " "; if(x<10) print " "; x' HLP_BC_FORMAT_OUT_NUMBER2INT='if(x<10) print " "; x' HLP_BC_FORMAT_OUT_NUMBER6INT='if(x<1000000) print " "; if(x<100000) print " "; if(x<10000) print " "; if(x<1000) print " "; if(x<100) print " "; if(x<10) print " "; x' HLP_BC_FORMAT_OUT_NUMBER1='if(x<1 && x>0) print 0; x' HLP_BC_FORMAT_OUT_NUMBER2='if(x<10) print " "; if(x<1) print 0; x' HLP_BC_FORMAT_OUT_NUMBER1INT='x' HLP_BC_FORMAT_DIGIT0='scale=0; if(x<0)x=(x-0.5)/1; if(x>=0)x=(x+0.5)/1;' HLP_BC_FORMAT_DIGIT2="scale=6; x=x*100; ${HLP_BC_FORMAT_DIGIT0} scale=2; x=x/100;" HLP_BC_FORMAT_DIGIT3="scale=6; x=x*1000; ${HLP_BC_FORMAT_DIGIT0}; scale=3; x=x/1000;" HLP_BC_FORMAT_DIGIT4="scale=6; x=x*10000; ${HLP_BC_FORMAT_DIGIT0}; scale=4; x=x/10000;" function gettime() { echo -n $( date +'%s.%N' ) } #1st argument start time #2st argument finished time #3st argument size function getspeed() { if [ -z "$1" -a -z "$2" -a -z "$3" ]; then echo "Type of input of getspeed function mismatch error." >&2 exit 3 fi echo "scale=9; x=$3/( $2 - $1 ); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD } #1st argument start time #2st argument compresed size function getratio() { if [ -z "$1" -a -z "$2" ]; then echo "Type of input of getratio function mismatch error." >&2 exit 3 fi echo "scale=9; x=$2/$1; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD } #1st argument start time #2st argument compresed size function getratio_block() { if [ -z "$1" -a -z "$2" ]; then echo "Type of input of getratio function mismatch error." >&2 exit 3 fi a="$( echo "scale=0; a=($1/${SIZE_OF_BLOCK})+1; scale=9; a*(${SIZE_OF_BLOCK} + ${ADD_SIZE_TO_BLOCK})" | $BCCMD )" b="$( echo "scale=0; a=($2/${SIZE_OF_BLOCK})+1; scale=9; a*(${SIZE_OF_BLOCK} + ${ADD_SIZE_TO_BLOCK})" | $BCCMD )" echo "scale=9; x=$b/$a; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD } #mult by 100; with 2 decimal digits function format_ratio() { if [ -z "$1" ]; then echo "Type of input of format_ratio function mismatch error." >&2 exit 3 fi if [ "$#" -gt "1" ]; then r="$( echo "scale=9; x=$1*100.0; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" echo -n "$r %" exit 1 fi r="$( echo "scale=9; x=$1*100.0; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER4}" | $BCCMD )" r2="$( echo "x=$1; ${HLP_BC_FORMAT_DIGIT4} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" echo -n "${r} % (${r2})" } #speed i B/sec, KiB/sec MiB/sec function format_speed() { if [ -z "$1" ]; then echo "Type of input of format_speed function mismatch error." >&2 exit 3 fi n2="$( echo "$1 > 734208" | $BCCMD )" n1="$( echo "$1 > 717" | $BCCMD )" if [ "$n2" -eq "1" ]; then d='1048576' suff='MiB/sec' elif [ "$n1" -eq "1" ]; then d='1024' suff='KiB/sec' else d='1' suff='B/sec ' fi r="$( echo "scale=9; x=$1/$d; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER4}" | $BCCMD )" if [ "$#" -gt "1" ]; then echo -n "$r $suff" exit 1 fi r2="$( echo "x=$1; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER1INT}" | $BCCMD )" echo -n "$r $suff (${r2} B/sec)" } function format_size() { if [ -z "$1" ]; then echo "Type of input of format_size function mismatch error." >&2 exit 3 fi n4="$( echo "$1 > 769872887808" | $BCCMD )" n3="$( echo "$1 > 751828992" | $BCCMD )" n2="$( echo "$1 > 734208" | $BCCMD )" n1="$( echo "$1 > 717" | $BCCMD )" if [ "$n4" -eq "1" ]; then d='1099511627776' suff='TiB' elif [ "$n3" -eq "1" ]; then d='1073741824' suff='GiB' elif [ "$n2" -eq "1" ]; then d='1048576' suff='MiB' elif [ "$n1" -eq "1" ]; then d='1024' suff='KiB' else d='1' suff='B' fi r="$( echo "scale=9; x=$1/$d; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER4}" | $BCCMD )" r2="$( echo "x=$1; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER1INT}" | $BCCMD )" if [ "$d" -eq "1" ]; then r="$( echo "x=$1; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER4INT}" | $BCCMD )" echo -n "${r} $suff (${r2} B)" else echo -n "${r} $suff (${r2} B)" fi } function format_time() { if [ -z "$1" ]; then echo "Type of input of format_time function mismatch error." >&2 exit 3 fi rmin="$( echo "x=$1/60; ${HLP_BC_FORMAT_OUT_NUMBER2INT}" | $BCCMD )" rsec="$( echo "scale=6; x=$1 - ${rmin}*60; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER2}" | $BCCMD )" rt="$( echo "x=$1; ${HLP_BC_FORMAT_DIGIT4} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" echo -n "${rmin} min ${rsec} sec (${rt} sec)" } #1st param value array #return sorted index asc based on 1st param BUBBLE_DESC=0 BUBBLE_RES=() function bubble_sort() { local array=($@) local max=$(($# - 1)) BUBBLE_RES=() for((i=0; i < $#; i++)); do BUBBLE_RES+=("$i") done while ((max > 0)) do i=0 while ((i < max)) do if [ "${BUBBLE_DESC}" -eq "0" ]; then r="$( echo "${array[$i]} < ${array[$((i + 1))]}" | $BCCMD )" else r="$( echo "${array[$i]} > ${array[$((i + 1))]}" | $BCCMD )" fi if [ "$r" -eq "1" ]; then v=${array[$i]} k=${BUBBLE_RES[$i]} array[$i]=${array[$((i + 1))]} BUBBLE_RES[$i]=${BUBBLE_RES[$((i + 1))]} array[$((i + 1))]=$v BUBBLE_RES[$((i + 1))]=$k fi ((i += 1)) done ((max -= 1)) done } #variables TESTS_COUNT="${#TESTS[@]}" #skip file (no regular file) counter F_SKIPCNT=0 # RES_FILES_CNT=0 #time size size_compressed block block_compressed speed ratio ratio_block RES_SUM_time=() RES_SUM_size=() RES_SUM_size_compressed=() RES_SUM_block=() RES_SUM_block_compressed=() RES_SUM_speed=() RES_SUM_ratio=() RES_SUM_ratio_block=() for((i=0; i<${TESTS_COUNT}; i++)); do RES_SUM_time+=( 0 ) RES_SUM_size+=( 0 ) RES_SUM_size_compressed+=( 0 ) RES_SUM_block+=( 0 ) RES_SUM_block_compressed+=( 0 ) RES_SUM_speed+=( '?' ) RES_SUM_ratio+=( '?' ) RES_SUM_ratio_block+=( '?' ) done # Process function ----------------------- #need one arguments "full filename" function processfile() { srcfile="$1" old_leave_file_size='999999999999' old_leave_file_name='' if [ "$VERBOSE" -eq "1" ]; then echo -e "\nStart file: '$srcfile'" fi for((i=0; i<${TESTS_COUNT}; i++)); do index=${TESTS[$i]} if [ ! -f "$srcfile" ]; then echo "'processfile' - file doesn't exist." >&2 exit 5 fi fname="$( basename "$srcfile" )" # ### --- hold tmp dir cd "${TMP}/${TMPDIR}" if [ "$?" -ne "0" ]; then echo "CD ERROR!, 'cd \"${TMP}/${TMPDIR}\"' directory." >&2 exit 4 fi cp "$srcfile" "./$fname" if [ "$?" -ne "0" ]; then echo "Copy ERROR!, 'cp \"$srcfile\"' \"./$fname\"" >&2 exit 4 fi if [ "$VERBOSE" -eq "1" ]; then echo "Comprimation cmd: '${TXTA[$index]}'" echo -e "--------------------------------------------" fi cmdtmp="${CMDA[$index]}" ext="${EXTA[$index]}" ffname=${fname//"'"/"'\"'\"'"} cmd="${cmdtmp//\[file\]/$ffname}" if [ "$USE_TIME" -eq "1" ]; then cmd="time -p $cmd" fi size="$( stat -c%s "${srcfile}" )" if [ "$?" -ne "0" ]; then echo "STAT ERROR!, 'stat -c%s \"${srcfile}\"' directory." >&2 exit 3 fi start_t="$( gettime )" # ### --- dangerous command eval "$cmd" ret_code=$? if [ "$ret_code" -ne "0" ]; then echo "COMPRIM ERROR!, CMD: '$cmd' ." >&2 exit 3 fi stop_t="$( gettime )" # ### --- hold tmp dir cd "${TMP}/${TMPDIR}" if [ "$?" -ne "0" ]; then echo "CD ERROR!, 'cd \"${TMP}/${TMPDIR}\"' directory." >&2 exit 4 fi size_compressed="$( stat -c%s "${fname}${ext}" )" if [ "$?" -ne "0" ]; then echo "STAT ERROR!, 'stat -c%s \"${fname}${ext}\"' directory." >&2 exit 3 fi ttime="$( echo "scale=16; x=${stop_t} - ${start_t}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" speed="$( getspeed "${start_t}" "${stop_t}" "${size}" )" ratio="$( getratio "${size}" "${size_compressed}" )" ratio_block="$( getratio_block "${size}" "${size_compressed}" )" blocks="$( echo "scale=0; (${size}/${SIZE_OF_BLOCK})+1" | $BCCMD )" blocks_compressed="$( echo "scale=0; (${size_compressed}/${SIZE_OF_BLOCK})+1" | $BCCMD )" RES_SUM_time[$i]="$( echo "scale=16; x=${RES_SUM_time[$i]} + ${ttime}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" RES_SUM_size[$i]="$( echo "${RES_SUM_size[$i]} + ${size}" | $BCCMD )" RES_SUM_size_compressed[$i]="$( echo "${RES_SUM_size_compressed[$i]} + ${size_compressed}" | $BCCMD )" RES_SUM_block[$i]="$( echo "${RES_SUM_block[$i]} + ${blocks}" | $BCCMD )" RES_SUM_block_compressed[$i]="$( echo "${RES_SUM_block_compressed[$i]} + ${blocks_compressed}" | $BCCMD )" if [ "${LEAVE_COMP}" -eq "2" ]; then if [ "${old_leave_file_size}" -gt "${size_compressed}" ]; then leaveit=1 if [ -n "${old_leave_file_name}" ]; then # ### --- dangerous command rm "${old_leave_file_name}" if [ "$?" -ne "0" ]; then echo "RM ERROR!, 'rm \"${old_leave_file_name}\"' directory." >&2 exit 4 fi fi old_leave_file_name="./${fname}${ext}" old_leave_file_size="${size_compressed}" else leaveit=0 fi elif [ "${LEAVE_COMP}" -eq "1" ]; then leaveit=1 else leaveit=0 fi if [ "${leaveit}" -eq "0" ]; then # ### --- dangerous command rm "./${fname}${ext}" if [ "$?" -ne "0" ]; then echo "RM ERROR!, 'rm \"./${fname}${ext}\"' directory." >&2 exit 4 fi fi if [ -f "${fname}" ]; then # ### --- dangerous command rm "./${fname}" if [ "$?" -ne "0" ]; then echo "RM ERROR!, 'rm \"./${fname}\"' directory." >&2 exit 4 fi fi if [ "$VERBOSE" -eq "1" ]; then echo " Time: $( format_time "${ttime}" )" echo " Speed: $( format_speed "${speed}" )" echo " Size: $( format_size "${size}" ); blocks: ${blocks}" echo " Compressed: $( format_size "${size_compressed}" ); blocks: ${blocks_compressed}" echo " Ratio: $( format_ratio "${ratio}" )" echo "Ratio block: $( format_ratio "${ratio_block}" )" echo -e "--------------------------------------------\n" fi done # ### --- dangerous command if [ -n "${TAR_FILENAME}" ]; then tr_cmd= if [ "${RES_FILES_CNT}" -eq "0" ]; then tr_cmd="${TAR_CMD[0]}" else tr_cmd="${TAR_CMD[1]}" fi ${tr_cmd} "${TAR_FILENAME}" "$srcfile" 2>/dev/null if [ "$?" -ne "0" ]; then echo "TAR ERROR!, ' ${tr_cmd} \"${TAR_FILENAME}\" \"$srcfile\"." >&2 exit 4 fi fi RES_FILES_CNT=$(( RES_FILES_CNT + 1 )) if [ "$VERBOSE" -eq "1" ]; then echo -e "End file: '$srcfile'" fi } cd "${TMP}" if [ "$?" -ne "0" ]; then echo "CD ERROR!, 'cd ${TMP}' directory." >&2 exit 3 fi mkdir "${TMPDIR}" if [ "$?" -ne "0" ]; then echo "MKDIR ERROR!, 'mkdir \"${TMPDIR}\"' directory." >&2 exit 3 fi cd "${TMPDIR}" if [ "$?" -ne "0" ]; then echo "CD ERROR!, 'cd \"${TMPDIR}\"' directory." >&2 exit 3 fi # ------------------ save -------------------- function save(){ if [ -n "${SAVE_FILENAME}" ]; then echo "# BEGIN $1 comptest.bash utility save file" > "${SAVE_FILENAME}" echo "# SIZE OF BLOCK:" >> "${SAVE_FILENAME}" echo "${SIZE_OF_BLOCK}" >> "${SAVE_FILENAME}" echo "# TEST COUNT:" >> "${SAVE_FILENAME}" echo "${TESTS_COUNT}" >> "${SAVE_FILENAME}" echo "# TESTS ARRAY:" >> "${SAVE_FILENAME}" echo "${TESTS[@]}" >> "${SAVE_FILENAME}" echo "# TESTS RESULT COUNTS:" >> "${SAVE_FILENAME}" echo "${RES_FILES_CNT}" >> "${SAVE_FILENAME}" echo "# NO REGULAR FILES COUNTS:" >> "${SAVE_FILENAME}" echo "${F_SKIPCNT}" >> "${SAVE_FILENAME}" echo "# SUM TIME ARRAY:" >> "${SAVE_FILENAME}" echo "${RES_SUM_time[@]}" >> "${SAVE_FILENAME}" echo "# SUM SIZE ARRAY:" >> "${SAVE_FILENAME}" echo "${RES_SUM_size[@]}" >> "${SAVE_FILENAME}" echo "# SUM SIZE COMPRESSED ARRAY:" >> "${SAVE_FILENAME}" echo "${RES_SUM_size_compressed[@]}" >> "${SAVE_FILENAME}" echo "# SUM BLOCK COUNT ARRAY:" >> "${SAVE_FILENAME}" echo "${RES_SUM_block[@]}" >> "${SAVE_FILENAME}" echo "# SUM COMPRESSED BLOCK COUNT ARRAY:" >> "${SAVE_FILENAME}" echo "${RES_SUM_block_compressed[@]}" >> "${SAVE_FILENAME}" echo "# END $1 comptest.bash utility save file" >> "${SAVE_FILENAME}" fi } # -------------------------------------------- breakit=0 function control_c(){ # echo "Interupting..." if [ "${breakit}" -gt "0" ]; then exit 3 fi breakit=1 } # ----- trap ------- trap control_c INT #process all files ----------------------- if [ "${INPUTTYPE}" -eq "-2" ]; then echo "Started -i, stdin file names" while read file; do if [ -f "$file" ]; then processfile "$file" else F_SKIPCNT=$(( F_SKIPCNT + 1 )) if [ "$VERBOSE" -eq "1" ]; then echo "The file '$1' is not regular file" fi fi if [ "${breakit}" -ne "0" ]; then echo "Interupted…" save 'interupted' exit 3 else save 'in progess' fi done elif [ "${INPUTTYPE}" -eq "-1" ]; then echo "Started -f, file names as parametrs" while [ "$#" != "0" ]; do if [ -f "$1" ]; then processfile "$1" else F_SKIPCNT=$(( F_SKIPCNT + 1 )) if [ "$VERBOSE" -eq "1" ]; then echo "The file '$1' is not regular file" fi fi if [ "${breakit}" -ne "0" ]; then echo "Interupted…" save 'interupted' exit 3 else save 'in progess' fi shift done elif [ "${INPUTTYPE}" -eq "-3" ]; then echo "Started -o, read saved data" i='0' while read line; do if [ "$i" -eq "2" ]; then SIZE_OF_BLOCK="${line}" elif [ "$i" -eq "4" ]; then TESTS_COUNT="${line}" elif [ "$i" -eq "6" ]; then TESTS=( ${line} ) elif [ "$i" -eq "8" ]; then RES_FILES_CNT="${line}" elif [ "$i" -eq "10" ]; then F_SKIPCNT="${line}" elif [ "$i" -eq "12" ]; then RES_SUM_time=( ${line} ) elif [ "$i" -eq "14" ]; then RES_SUM_size=( ${line} ) elif [ "$i" -eq "16" ]; then RES_SUM_size_compressed=( ${line} ) elif [ "$i" -eq "18" ]; then RES_SUM_block=( ${line} ) elif [ "$i" -eq "20" ]; then RES_SUM_block_compressed=( ${line} ) fi i=$((i=i+1)) done < "${OPEN_FILENAME}" RES_SUM_speed=() RES_SUM_ratio=() RES_SUM_ratio_block=() for((i=0; i<${TESTS_COUNT}; i++)); do RES_SUM_speed+=( '?' ) RES_SUM_ratio+=( '?' ) RES_SUM_ratio_block+=( '?' ) done elif [ "${INPUTTYPE}" -eq "-4" ]; then echo "Started -d, tar directory" mkdir "${TMP}/${TMPDIR}/${TAR_TMP_DIR}" if [ "$?" -ne "0" ]; then echo "MKDIR ERROR!, 'mkdir \"${TMP}/${TMPDIR}/${TAR_TMP_DIR}\"' directory." >&2 exit 3 fi while read dir; do if [ -d "$dir" ]; then drname="$( basename "$dir" )" # ### --- hold tmp dir cd "${TMP}/${TMPDIR}" if [ "$?" -ne "0" ]; then echo "CD ERROR!, 'cd \"${TMP}/${TMPDIR}\"' directory." >&2 exit 4 fi tr_cmd="${TAR_CMD[0]}" # ### --- dangerous command ${tr_cmd} "${TAR_TMP_DIR}/${drname}.tar" "$dir" 2>/dev/null if [ "$?" -ne "0" ]; then echo "TAR DIRECTORY ERROR!, '${tr_cmd} \"${TAR_TMP_DIR}/${drname}.tar\" \"$dir\"'." >&2 exit 3 fi processfile "${TMP}/${TMPDIR}/${TAR_TMP_DIR}/${drname}.tar" # ### --- hold tmp dir cd "${TMP}/${TMPDIR}" if [ "$?" -ne "0" ]; then echo "CD ERROR!, 'cd \"${TMP}/${TMPDIR}\"' directory." >&2 exit 4 fi # ### --- dangerous command rm "./${TAR_TMP_DIR}/${drname}.tar" if [ "$?" -ne "0" ]; then echo "RM ERROR!, 'rm \"./${TAR_TMP_DIR}/${drname}.tar}\"'." >&2 exit 3 fi else F_SKIPCNT=$(( F_SKIPCNT + 1 )) if [ "$VERBOSE" -eq "1" ]; then echo "The file '$1' is not directory" fi fi if [ "${breakit}" -ne "0" ]; then echo "Interupted…" save 'interupted' exit 3 else save 'in progess' fi shift done rmdir "${TMP}/${TMPDIR}/${TAR_TMP_DIR}" if [ "$?" -ne "0" ]; then echo "RMDIR ERROR!, 'rmdir \"${TMP}/${TMPDIR}/${TAR_TMP_DIR}\"' directory." >&2 exit 3 fi else echo "Type of input mismatch error." >&2 fi # ------------------------------------------ # ------------------ save it ----------------- if [ "${breakit}" -eq "0" ]; then save 'finished' fi # -------------------------------------------- #report ----------------------- EVOL_REF_PR=0.25 EVOL_LOWER_PR=0.05 EVOL_SAME_PR=0.005 EVOL_CHR=( '==' ' =' ' v' 'vv' '&&' ) CHR_LOW=' v' CHR_LOW2='vv' EVOL_UNLIM='99999999999999999999' EVOL_LAST_VALUE="-${EVOL_UNLIM}" EVOL_RES='' EVOL_SIDE=0 function start_evolution() { if [ "$1" -eq "0" ]; then EVOL_LAST_VALUE="${EVOL_UNLIM}" else EVOL_LAST_VALUE="-${EVOL_UNLIM}" fi EVOL_SIDE=0 } function evolution() { if [ "$2" -eq "0" ]; then r="$( echo "scale=2; x=${EVOL_LAST_VALUE} - $1; scale=0; r=4; if(x < (${EVOL_REF_PR}*${EVOL_LAST_VALUE})) r-=1; if(x < (${EVOL_LOWER_PR}*${EVOL_LAST_VALUE})) r-=1; if(x < (${EVOL_SAME_PR}*${EVOL_LAST_VALUE})) r-=1; if(x == 0) r=0; r" | $BCCMD )" else r="$( echo "scale=2; x=(${EVOL_LAST_VALUE} - $1)* -1; scale=0; r=4; if(x < (${EVOL_REF_PR}*${EVOL_LAST_VALUE})) r-=1; if(x < (${EVOL_LOWER_PR}*${EVOL_LAST_VALUE})) r-=1; if(x < (${EVOL_SAME_PR}*${EVOL_LAST_VALUE})) r-=1; if(x == 0) r=0; r" | $BCCMD )" fi if [ "$r" -eq "4" ]; then EVOL_LAST_VALUE="$1" if [ "${EVOL_SIDE}" -eq "0" ]; then EVOL_SIDE=1 else EVOL_SIDE=0 fi fi if [ "${EVOL_SIDE}" -eq "0" ]; then EVOL_RES="|${EVOL_CHR[$r]} " else EVOL_RES=" ${EVOL_CHR[$r]}|" fi } function width_itselfl(){ x="$1" while [ ${#x} -lt "$2" ] ; do x=" $x" done echo "$x" } function width_itselfr(){ x="$1" while [ ${#x} -lt "$2" ]; do x="$x " done echo "$x" } function gauge(){ x="" if [ $# -gt "2" ]; then if [ "$3" -gt "0" ]; then x="<<<<<${line:3}" width_itselfr "$x" "${2}" else while [ ${#x} -lt "$1" ]; do x="$x#" done x="${x:0:$(($2-5))}>>>>>" x="${GRAPH_POINT/\[letter\]/${x}}" width_itselfr "$x" "$((${2}+${GRAPH_POINT_L}))" fi else while [ ${#x} -lt "$1" ]; do x="$x#" done x="${GRAPH_POINT/\[letter\]/${x}}" width_itselfr "$x" "$((${2}+${GRAPH_POINT_L}))" fi } function toaverage(){ if [ "$1" -eq "-1" ]; then echo '-| ' else echo ' |+' fi } function toweightspeed(){ if [ "$1" -eq "-1" ]; then echo 'slow| ' else echo ' |fast' fi } function toweightratio(){ if [ "$1" -eq "-1" ]; then echo 'bad| ' else echo ' |good' fi } function nook(){ if [ "$1" -eq "1" ]; then echo 'no| ' else echo ' |OK' fi } # ------ compute necessary values ---------- SUM_time='0' SUM_size='0' SUM_size_compressed='0' TEST_INFO=() TEST_SHORT_INFO=() AVG_SPEED='0' AVG_RATIO='0' AVG_RATIO_BLOCK='0' MIN_SPEED='99999999999999999999' MIN_RATIO='99999999999999999999' MIN_RATIO_BLOCK='99999999999999999999' MAX_SPEED='0' MAX_RATIO='0' MAX_RATIO_BLOCK='0' NAME_WIDTH=20 for((i=0; i<${TESTS_COUNT}; i++)); do RES_SUM_speed[$i]="$( echo "scale=12; x=${RES_SUM_size[$i]}/${RES_SUM_time[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" AVG_SPEED="$( echo "scale=12; x=${AVG_SPEED} + ${RES_SUM_speed[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" MIN_SPEED="$( echo "scale=12; x=${RES_SUM_speed[$i]}; if(${MIN_SPEED}<x) x=${MIN_SPEED}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" MAX_SPEED="$( echo "scale=12; x=${RES_SUM_speed[$i]}; if(${MAX_SPEED}>x) x=${MAX_SPEED}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" RES_SUM_ratio[$i]="$( echo "scale=9; x=${RES_SUM_size_compressed[$i]}/${RES_SUM_size[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" AVG_RATIO="$( echo "scale=12; x=${AVG_RATIO} + ${RES_SUM_ratio[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" MIN_RATIO="$( echo "scale=12; x=${RES_SUM_ratio[$i]}; if(${MIN_RATIO}<x) x=${MIN_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" MAX_RATIO="$( echo "scale=12; x=${RES_SUM_ratio[$i]}; if(${MAX_RATIO}>x) x=${MAX_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" RES_SUM_ratio_block[$i]="$( echo "scale=9; x=${RES_SUM_block_compressed[$i]}/${RES_SUM_block[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" AVG_RATIO_BLOCK="$( echo "scale=12; x=${AVG_RATIO_BLOCK} + ${RES_SUM_ratio_block[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" MIN_RATIO_BLOCK="$( echo "scale=12; x=${RES_SUM_ratio_block[$i]}; if(${MIN_RATIO_BLOCK}<x) x=${MIN_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" MAX_RATIO_BLOCK="$( echo "scale=12; x=${RES_SUM_ratio_block[$i]}; if(${MAX_RATIO_BLOCK}>x) x=${MAX_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" SUM_time="$( echo "scale=12; x=${SUM_time} + ${RES_SUM_time[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" SUM_size="$( echo "scale=12; x=${SUM_size} + ${RES_SUM_size[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" SUM_size_compressed="$( echo "scale=12; x=${SUM_size_compressed} + ${RES_SUM_size_compressed[$i]}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" #create info testi="${TESTS[$i]}" #do not change '20' ! TEST_SHORT_INFO+=( "[ $(width_itselfr "${TXTA[$testi]}" ${NAME_WIDTH}) ]" ) str="${TEST_SHORT_INFO[$i]} S: $(width_itselfl "$( format_speed "${RES_SUM_speed[$i]}" 1 )" 14 ); R: $(width_itselfl "$( format_ratio "${RES_SUM_ratio[$i]}" 1 )" 8 ); RB: $(width_itselfl "$( format_ratio "${RES_SUM_ratio_block[$i]}" 1 )" 8 )" TEST_INFO+=( "${str}" ) done AVG_SPEED="$( echo "scale=9; x=${AVG_SPEED} / ${TESTS_COUNT}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" AVG_RATIO="$( echo "scale=9; x=${AVG_RATIO} / ${TESTS_COUNT}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" AVG_RATIO_BLOCK="$( echo "scale=9; x=${AVG_RATIO_BLOCK} / ${TESTS_COUNT}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" # --- sort results ------------------------- BUBBLE_DESC=0 bubble_sort "${RES_SUM_speed[@]}" speed_index=(${BUBBLE_RES[@]}) BUBBLE_DESC=1 bubble_sort "${RES_SUM_ratio[@]}" ratio_index=(${BUBBLE_RES[@]}) BUBBLE_DESC=1 bubble_sort "${RES_SUM_ratio_block[@]}" ratio_index_block=(${BUBBLE_RES[@]}) #echo "${speed_index[@]}" #echo "${ratio_index[@]}" #echo "${ratio_index_block[@]}" #echo "${RES_SUM_speed[@]}" #echo "${RES_SUM_size[@]}" #echo "${RES_SUM_size_compressed[@]}" #echo "${RES_SUM_block[@]}" #echo "${RES_SUM_block_compressed[@]}" #echo "${RES_SUM_speed[@]}" #echo "${RES_SUM_ratio[@]}" #echo "${RES_SUM_ratio_block[@]}" echo '' echo '# SUMARRY ####################################################################' echo "# Tested files: $(echo "x=${RES_FILES_CNT}; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER6INT}" | $BCCMD )" echo "# Skipped no-regular files: $(echo "x=${F_SKIPCNT}; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER6INT}" | $BCCMD )" echo "# Tested method count: $(echo "x=${TESTS_COUNT}; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER6INT}" | $BCCMD )" echo '#-----------------------------------------------------------------------------' echo "# All compression time: $( format_time "${SUM_time}" )" echo "# All tested files size: $( format_size "${RES_SUM_size[0]}" ); blocks: ${RES_SUM_block[0]}" echo "# All tested files blocks: $(echo "x=${RES_SUM_block[0]}; ${HLP_BC_FORMAT_DIGIT0} ${HLP_BC_FORMAT_OUT_NUMBER6INT}" | $BCCMD )" block_size="$( echo "scale=9; x=${RES_SUM_block[0]}*(${SIZE_OF_BLOCK} + ${ADD_SIZE_TO_BLOCK}); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" echo "# All tested files block size: $( format_size "${block_size}" )" echo '#-----------------------------------------------------------------------------' waitforkey echo "# Average speed: $(width_itselfl "$( format_speed "${AVG_SPEED}" 0 )" 18)" echo "# Average compress ratio: $(width_itselfl "$( format_ratio "${AVG_RATIO}" 1 )" 12)" echo "# Average compress ratio block: $(width_itselfl "$( format_ratio "${AVG_RATIO_BLOCK}" 1 )" 12)" echo '#-----------------------------------------------------------------------------' echo "# Minimum speed: $(width_itselfl "$( format_speed "${MIN_SPEED}" 0 )" 18)" echo "# Minimum compress ratio: $(width_itselfl "$( format_ratio "${MIN_RATIO}" 1 )" 12) (the best)" echo "# Minimum compress ratio block: $(width_itselfl "$( format_ratio "${MIN_RATIO_BLOCK}" 1 )" 12) (the best)" echo '#-----------------------------------------------------------------------------' echo "# Maximum speed: $(width_itselfl "$( format_speed "${MAX_SPEED}" 0 )" 18)" echo "# Maximum compress ratio: $(width_itselfl "$( format_ratio "${MAX_RATIO}" 1 )" 12) (the worst)" echo "# Maximum compress ratio block: $(width_itselfl "$( format_ratio "${MAX_RATIO_BLOCK}" 1 )" 12) (the worst)" echo '#-----------------------------------------------------------------------------' echo "# All uncompressed read: $( format_size "${SUM_size}" )" echo "# All compressed writes: $( format_size "${SUM_size_compressed}" )" echo '##############################################################################' waitforkey GAUGEWIDTH=25 echo '' echo '# ORDER BY SPEED ##################^^^^^^^####################################' cnt="${#speed_index[@]}" start_evolution 0 for((i=0; i<${cnt}; i++)); do index="${speed_index[$i]}" evolution "${RES_SUM_speed[$index]}" 0 echo "# ${EVOL_RES} ${TEST_INFO[$index]}" done echo '#-----------------------------------------------------------------------------' waitforkey int="$( echo "scale=12; x=${GAUGEWIDTH}/(${MAX_SPEED} - ${MIN_SPEED}); if(x<0.00000000001) x=0.00000000001; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" tmp_w="$( echo "scale=12; x=${REPORT_SPEED_W}*(${MAX_SPEED} - ${MIN_SPEED}) + ${MIN_SPEED}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" ww="$( echo "scale=12; x=${GAUGEWIDTH}*${REPORT_SPEED_W}; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" rr="$( echo "scale=12; x=${REPORT_SPEED_W}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" a="$( echo "scale=12; x=-1; if(${tmp_w}>${AVG_SPEED}) x=1; x" | $BCCMD )" w="$( echo "scale=12; x=${int}*(${AVG_SPEED} - ${MIN_SPEED}); ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" r="$( echo "scale=12; x=${w}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" s="$( echo "scale=12; x=-1; if(${AVG_SPEED}>${tmp_w}) x=1; x" | $BCCMD )" echo -e "# [ $(width_itselfr "Average speed" ${NAME_WIDTH} ) ] $(gauge "$w" "${GAUGEWIDTH}") $(width_itselfl $r 3) % &|& $(toweightspeed "$s")" echo -e "# [ $(width_itselfr "Speed alimit -s $(echo "scale=3; x=${REPORT_SPEED_W}; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD)" ${NAME_WIDTH} ) ] $(gauge "$ww" "${GAUGEWIDTH}") $(width_itselfl $rr 3) % $(toaverage "$a") &|&" echo '# -------------------- |-------------------------| | | ' for((i=0; i<${cnt}; i++)); do index="${speed_index[$i]}" w="$( echo "scale=12; x=${int}*(${RES_SUM_speed[$index]} - ${MIN_SPEED}); ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" r="$( echo "scale=12; x=${w}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" a="$( echo "scale=12; x=-1; if(${RES_SUM_speed[$index]}>${AVG_SPEED}) x=1; x" | $BCCMD )" s="$( echo "scale=12; x=-1; if(${RES_SUM_speed[$index]}>${tmp_w}) x=1; x" | $BCCMD )" echo -e "# ${TEST_SHORT_INFO[$index]} $(gauge "$w" "${GAUGEWIDTH}") $(width_itselfl $r 3) % $(toaverage "$a") $(toweightspeed "$s")" done echo '##############################################################################' waitforkey echo '' echo '# ORDER BY COMPRESSED FILE SIZE #######################vvvvvv#################' cnt="${#ratio_index[@]}" start_evolution 1 for((i=0; i<${cnt}; i++)); do index="${ratio_index[$i]}" evolution "${RES_SUM_ratio[$index]}" 1 echo "# ${EVOL_RES} ${TEST_INFO[$index]}" done echo '#-----------------------------------------------------------------------------' waitforkey min="$( echo "scale=9; x=1 - ${MAX_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" max="$( echo "scale=9; x=1 - ${MIN_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" avg="$( echo "scale=9; x=1 - ${AVG_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" int="$( echo "scale=9; x=${GAUGEWIDTH}/(${max} - ${min}); if(x<0.00000001) x=0.00000001; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" tmp_w="$( echo "scale=9; x=(${REPORT_RATIO_W}*(${max} - ${min}) + ${min}); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" ww="$( echo "scale=9; x=${GAUGEWIDTH}*${REPORT_RATIO_W}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" rr="$( echo "scale=9; x=${REPORT_RATIO_W}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" a="$( echo "scale=9; x=-1; if(${tmp_w}>(${avg})) x=1; x" | $BCCMD )" w="$( echo "scale=9; x=${int}*(${avg} - ${min}); ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" r="$( echo "scale=9; x=${w}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" s="$( echo "scale=9; x=-1; if((${avg})>${tmp_w}) x=1; x" | $BCCMD )" r_min="$( echo "scale=6; x=((${max} - ${min})/${GAUGEWIDTH}); if(x<0.000001) x=0.000001; x=((1 - ${REPORT_RATIO_MIN}) - ${min})/x; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" if [ "${r_min}" -lt "0" ]; then g_lim="$(gauge "0" "${GAUGEWIDTH}" "1")" g_rr=' <<<<' elif [ "${r_min}" -gt "${GAUGEWIDTH}" ]; then g_lim="$(gauge "${GAUGEWIDTH}" "${GAUGEWIDTH}" "0")" g_rr=' >>>>' else g_lim="$(gauge "$r_min" "${GAUGEWIDTH}")" g_rr="$( width_itselfl "$( echo "scale=6; x=${r_min}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" 3 ) %" fi echo -e "# [ $(width_itselfr "Compress min -R $(echo "scale=3; x=${REPORT_RATIO_MIN}; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD)" ${NAME_WIDTH} ) ] ${g_lim} ${g_rr} | | &|&" yesno=$(echo "${AVG_RATIO}>=${REPORT_RATIO_MIN}" | $BCCMD) echo -e "# [ $(width_itselfr "Average ratio" ${NAME_WIDTH} ) ] $(gauge "$w" "${GAUGEWIDTH}") $(width_itselfl $r 3) % &|& $(toweightratio "$s") $(nook "$yesno")" echo -e "# [ $(width_itselfr "Ratio alimit -r $(echo "scale=3; x=${REPORT_RATIO_W}; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD)" ${NAME_WIDTH} ) ] $(gauge "$ww" "${GAUGEWIDTH}") $(width_itselfl $rr 3) % $(toaverage "$a") &|& |" echo '# -------------------- |-------------------------| | | |' for((i=0; i<${cnt}; i++)); do index="${ratio_index[$i]}" yesno="$(echo "(${RES_SUM_ratio[$index]})>=${REPORT_RATIO_MIN}" | $BCCMD)" w="$( echo "scale=9; x=${int}*((1 - ${RES_SUM_ratio[$index]}) - ${min}); ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" r="$( echo "scale=9; x=${w}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" a="$( echo "scale=9; x=-1; if((1 - ${RES_SUM_ratio[$index]}>${avg})) x=1; x" | $BCCMD )" s="$( echo "scale=9; x=-1; if((1 - ${RES_SUM_ratio[$index]}>${tmp_w})) x=1; x" | $BCCMD )" echo -e "# ${TEST_SHORT_INFO[$index]} $(gauge "$w" "${GAUGEWIDTH}") $(width_itselfl $r 3) % $(toaverage "$a") $(toweightratio "$s") $(nook "$yesno")" done echo '##############################################################################' waitforkey echo '' echo '# ORDER BY COMPRESSED FILE BLOCK COUNT ##############################vvvvvv###' cnt="${#ratio_index_block[@]}" start_evolution 1 for((i=0; i<${cnt}; i++)); do index="${ratio_index_block[$i]}" evolution "${RES_SUM_ratio_block[$index]}" 1 echo "# ${EVOL_RES} ${TEST_INFO[$index]}" done echo '#-----------------------------------------------------------------------------' waitforkey min="$( echo "scale=9; x=1 - ${MAX_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" max="$( echo "scale=9; x=1 - ${MIN_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" avg="$( echo "scale=9; x=1 - ${AVG_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" int="$( echo "scale=9; y=${max} - ${min}; if(y < 0.00000001) y=0.00000001; x=${GAUGEWIDTH}/y; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" tmp_w="$( echo "scale=9; x=(${REPORT_RATIO_W}*(${max} - ${min}) + ${min}); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" ww="$( echo "scale=9; x=${GAUGEWIDTH}*${REPORT_RATIO_W}; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" rr="$( echo "scale=9; x=${REPORT_RATIO_W}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" a="$( echo "scale=9; x=-1; if(${tmp_w}>(${avg})) x=1; x" | $BCCMD )" w="$( echo "scale=9; x=${int}*(${avg} - ${min}); ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" r="$( echo "scale=9; x=${w}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" s="$( echo "scale=9; x=-1; if((${avg})>${tmp_w}) x=1; x" | $BCCMD )" r_min="$( echo "scale=6; x=((${max} - ${min})/${GAUGEWIDTH}); if(x<0.000001) x=0.000001; x=((1 - ${REPORT_RATIO_MIN}) - ${min})/x; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" if [ "${r_min}" -lt "0" ]; then g_lim="$(gauge "0" "${GAUGEWIDTH}" "1")" g_rr=' <<<<' elif [ "${r_min}" -gt "${GAUGEWIDTH}" ]; then g_lim="$(gauge "${GAUGEWIDTH}" "${GAUGEWIDTH}" "0")" g_rr=' >>>>' else g_lim="$(gauge "$r_min" "${GAUGEWIDTH}")" g_rr="$( width_itselfl "$( echo "scale=6; x=${r_min}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" 3 ) %" fi echo -e "# [ $(width_itselfr "Compress min -R $(echo "scale=3; x=${REPORT_RATIO_MIN}; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD)" ${NAME_WIDTH} ) ] ${g_lim} ${g_rr} | | &|&" yesno=$(echo "${AVG_RATIO_BLOCK}>=${REPORT_RATIO_MIN}" | $BCCMD) echo -e "# [ $(width_itselfr "Average ratio block" ${NAME_WIDTH} ) ] $(gauge "$w" "${GAUGEWIDTH}") $(width_itselfl $r 3) % &|& $(toweightratio "$s") |" echo -e "# [ $(width_itselfr "Ratio limit -r $(echo "scale=3; x=${REPORT_RATIO_W}; ${HLP_BC_FORMAT_DIGIT2} ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD)" ${NAME_WIDTH} ) ] $(gauge "$ww" "${GAUGEWIDTH}") $(width_itselfl $rr 3) % $(toaverage "$a") &|& |" echo '# -------------------- |-------------------------| | | |' for((i=0; i<${cnt}; i++)); do index="${ratio_index_block[$i]}" yesno="$(echo "(${RES_SUM_ratio_block[$index]})>=${REPORT_RATIO_MIN}" | $BCCMD)" w="$( echo "scale=9; x=${int}*((1 - ${RES_SUM_ratio_block[$index]}) - ${min}); ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" r="$( echo "scale=9; x=${w}/${GAUGEWIDTH}*100; ${HLP_BC_FORMAT_DIGIT0}; x" | $BCCMD )" a="$( echo "scale=9; x=-1; if((1 - ${RES_SUM_ratio_block[$index]}>${avg})) x=1; x" | $BCCMD )" s="$( echo "scale=9; x=-1; if((1 - ${RES_SUM_ratio_block[$index]}>${tmp_w})) x=1; x" | $BCCMD )" echo -e "# ${TEST_SHORT_INFO[$index]} $(gauge "$w" "${GAUGEWIDTH}") $(width_itselfl $r 3) % $(toaverage "$a") $(toweightratio "$s") $(nook "$yesno")" done echo '##############################################################################' echo '' if [ "$STOPIT" -eq "1" ]; then echo "Next two wait for any key without message will be required." fi waitforkey # ----- graph data ------------------------------------- grdata=() grdata+=( '# | |' ) grdata+=( '# ^| |' ) grdata+=( '# ^| |' ) grdata+=( '# ^| |' ) grdata+=( '# | |' ) grdata+=( '# f| |' ) grdata+=( '# a| |' ) grdata+=( '# s| |' ) grdata+=( '# t| |' ) grdata+=( '# | |' ) grdata+=( '# s| |' ) grdata+=( '# p| |' ) grdata+=( '# e| |' ) grdata+=( '# e| |' ) grdata+=( '# d| |' ) grdata+=( '# | |' ) grdata+=( '# s| |' ) grdata+=( '# l| |' ) grdata+=( '# o| |' ) grdata+=( '# w| |' ) grdata+=( '# | |' ) grdata+=( '# v| |' ) grdata+=( '# v| |' ) grdata+=( '# v| |' ) grdata+=( '# | |' ) echo '# QUADRANT GRAPH RATIO (by filesize) #########################################' min="$( echo "scale=9; x=1 - ${MAX_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" max="$( echo "scale=9; x=1 - ${MIN_RATIO}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" min_block="$( echo "scale=9; x=1 - ${MAX_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" max_block="$( echo "scale=9; x=1 - ${MIN_RATIO_BLOCK}; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" mingr_h="$(width_itselfl "$(format_ratio "${MAX_RATIO}" 1 )" 8)" maxgr_h="$(width_itselfl "$(format_ratio "${MIN_RATIO}" 1 )" 8)" TESTSID='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghuiklmnopqrstuvwxyz@#$%^&*()";.,' MIDspeed="$( echo "scale=12; x=${MIN_SPEED}+(${MAX_SPEED} - ${MIN_SPEED} / 2); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" MIDratio="$( echo "scale=12; x=${MIN_RATIO}+(${MAX_RATIO} - ${MIN_RATIO} / 2); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" MIDratio_block="$( echo "scale=12; x=${MIN_RATIO_BLOCK}+(${MIN_RATIO_BLOCK} - ${MIN_RATIO_BLOCK} / 2); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" SPEED_R="$( echo "scale=9; x=${MAX_SPEED} - ${MIN_SPEED}; if(x<0.001) x=0.001; ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" GR_POS=() GR_POS_block=() GR_val=() GR_val_block=() GR_W=72 GR_WM=5 GR_H=24 #-------- compute arrays for quadrant graphs for((i=0; i<${TESTS_COUNT}; i++)); do TESTSID_h="$( echo "scale=6; x=(${MAX_SPEED} - ${MIN_SPEED})/${GR_H}; if(x<0.000001) x=0.000001; x=(${RES_SUM_speed[$i]} - ${MIN_SPEED})/x; if(x < 0) x=0; y=${GR_H}; if(x > y) x=y; x=${GR_H}-x; x" | $BCCMD )" TESTSID_v="$( echo "scale=6; x=((${max} - ${min})/${GR_W}); if(x<0.000001) x=0.000001; x=((1 - ${RES_SUM_ratio[$i]}) - ${min})/x; x=${GR_W}-x; if(x < 0) x=0; if(x > ${GR_W}) x=${GR_W}; x=${GR_W}-x + ${GR_WM}; x" | $BCCMD )" w="$( echo "scale=6; x=(${GR_H} - ${TESTSID_h})*(${TESTSID_v}*(${GR_H}/${GR_W})); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" TESTSID_h="$( echo "x=${TESTSID_h}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" TESTSID_v="$( echo "x=${TESTSID_v}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" GR_POS+=( "${TESTSID_h}" "${TESTSID_v}" "${TEST_INFO[$i]}" '?' ) GR_val+=( "$w" ) TESTSID_h="$( echo "scale=6; x=(${MAX_SPEED} - ${MIN_SPEED})/${GR_H}; if(x<0.000001) x=0.000001; x=(${RES_SUM_speed[$i]} - ${MIN_SPEED})/x; if(x < 0) x=0; y=${GR_H}; if(x > y) x=y; x=${GR_H}-x; x" | $BCCMD )" TESTSID_v="$( echo "scale=6; x=((${max_block} - ${min_block})/${GR_W}); if(x<0.000001) x=0.000001; x=((1 - ${RES_SUM_ratio_block[$i]}) - ${min_block})/x; x=${GR_W}-x; if(x < 0) x=0; if(x > ${GR_W}) x=${GR_W}; x=${GR_W}-x + ${GR_WM}; x" | $BCCMD )" w="$( echo "scale=6; x=(${GR_H} - ${TESTSID_h})*(${TESTSID_v}*(${GR_H}/${GR_W})); ${HLP_BC_FORMAT_OUT_NUMBER1}" | $BCCMD )" TESTSID_h="$( echo "x=${TESTSID_h}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" TESTSID_v="$( echo "x=${TESTSID_v}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" GR_POS_block+=( "${TESTSID_h}" "${TESTSID_v}" "${TEST_INFO[$i]}" '?' ) GR_val_block+=( "$w" ) done BUBBLE_DESC=0 bubble_sort "${GR_val[@]}" GR_index=(${BUBBLE_RES[@]}) bubble_sort "${GR_val_block[@]}" GR_index_block=(${BUBBLE_RES[@]}) TESTSID_i='0' cnt=${#GR_index[@]} for((i=0; i<${cnt}; i++)); do index=$((${GR_index[$i]}*4)) TESTSID_h=${GR_POS[$(($index))]} TESTSID_v=${GR_POS[$(($index+1))]} ch='' for((j=0; j<${i}; j++)); do index_j=$((${GR_index[$j]}*4)) TESTSID_h2=${GR_POS[$(($index_j))]} TESTSID_v2=${GR_POS[$(($index_j+1))]} if [ "$TESTSID_h" -eq "$TESTSID_h2" -a "$TESTSID_v" -eq "$TESTSID_v2" ]; then k="$(($index_j+3))" ch="${GR_POS[$k]}" fi done if [ -z "${ch}" ]; then TESTSID_i="$((${TESTSID_i}+1))" ch="${TESTSID:${TESTSID_i}:1}" fi k="$(($index+3))" GR_POS[$k]="$ch" done TESTSID_i='0' cnt=${#GR_index_block[@]} for((i=0; i<${cnt}; i++)); do index=$((${GR_index_block[$i]}*4)) TESTSID_h=${GR_POS_block[$(($index))]} TESTSID_v=${GR_POS_block[$(($index+1))]} ch='' for((j=0; j<${i}; j++)); do index_j=$((${GR_index_block[$j]}*4)) TESTSID_h2=${GR_POS_block[$(($index_j))]} TESTSID_v2=${GR_POS_block[$(($index_j+1))]} if [ "$TESTSID_h" -eq "$TESTSID_h2" -a "$TESTSID_v" -eq "$TESTSID_v2" ]; then k="$(($index_j+3))" ch="${GR_POS_block[$k]}" fi done if [ -z "${ch}" ]; then TESTSID_i="$((${TESTSID_i}+1))" ch="${TESTSID:${TESTSID_i}:1}" fi k="$(($index+3))" GR_POS_block[$k]="$ch" done grh="# <<< bad ${mingr_h} compression ratio ${maxgr_h} good >>> " grh1="$grh" waitforkey2 H_SPLIT="$( echo "scale=6; x=(1 - ${REPORT_SPEED_W})*${GR_H}; if(x < 0) x=0; y=${GR_H}; if(x > y) x=y; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" V_SPLIT="$( echo "scale=6; x=${REPORT_RATIO_W}*${GR_W}; y=${GR_W}; if(x < 0) x=0; if(x > ${GR_W}) x=${GR_W}; x=x + ${GR_WM}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" V_MIN="$( echo "scale=6; x=((${MAX_RATIO} - ${MIN_RATIO})/${GR_W}); if(x<0.000001) x=0.000001; x=(${REPORT_RATIO_MIN} - ${MIN_RATIO})/x; x=${GR_W}-x; y=${GR_W}+1; if(x < -1) x=-1; if(x > y) x=y; x=x + ${GR_WM}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" H_MIN="$( echo "scale=12; x=((${MAX_SPEED} - ${MIN_SPEED})/${GR_H}); if(x<0.000001) x=0.000001; x=(${REPORT_SPEED_MIN} - ${MIN_SPEED})/x; y=${GR_H}+1; if(x < -1) x=-1; if(x > y) x=y; x=${GR_H}-x; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD)" #print graph if [ "${V_MIN}" -eq "${V_SPLIT}" -o "${V_MIN}" -eq "$((${GR_WM}-1))" -o "${V_MIN}" -eq "$((${GR_W} + ${GR_WM}+1))" ]; then pair=0 else pair=2 fi data=("${grdata[@]}") #----- graph background with limits ----------------- function graphlines(){ if [ "${H_MIN}" -ge "${GR_H}" ]; then grh="${grh// / ~~~~~~~ }" elif [ "${H_MIN}" -le "-1" ]; then grh1="${grh1// / ~~~~~~~ }" else line="${data[${H_MIN}]}" line="${line// /~~~~~~~}" line="${line// /~~~}" data[${H_MIN}]="${line}" fi cnt=${#grdata[@]} for((i=0; i<${cnt}; i++)); do line="${data[$i]}" if [ "$i" -eq "${H_SPLIT}" ]; then if [ "${H_MIN}" -eq "${H_SPLIT}" ]; then line="${line//~~~~~~~~/-~-~-~-~}" line="${line//~~~~/-~-~}" line="${line//~~/~-}" else line="${line// /-------}" line="${line// /---}" line="${line:0:$((${V_SPLIT}-1))}|${line:${V_SPLIT}}" line="${line:0:$((${V_SPLIT}-1))}+${line:${V_SPLIT}}" fi else line="${line:0:$((${V_SPLIT}-1))}|${line:${V_SPLIT}}" fi if [ "${pair}" -lt "2" ]; then if [ "${pair}" -eq "0" ]; then pair=1 line="${line:0:$((${V_MIN}-1))}:${line:${V_MIN}}" else pair=0 fi else line="${line:0:$((${V_MIN}-1))}:${line:${V_MIN}}" fi data[$i]="${line}" done } graphlines echo "$grh" cnt=${#GR_index[@]} for((i=0; i<${cnt}; i++)); do index=$((${GR_index[$i]}*4)) ch="${GR_POS[$(($index+3))]}" h=${GR_POS[$(($index))]} v=${GR_POS[$(($index+1))]} line="${data[$h]}" line="${line:0:$(($v-1))}${ch}${line:$v}" data[$h]="${line}" done cnt=${#grdata[@]} for((i=0; i<${cnt}; i++)); do if [ "$i" -eq "$((cnt-1))" ]; then echo -n -e "${data[$i]}" else echo -e "${data[$i]}" fi done waitforkey echo '' echo "$grh1" echo '##############################################################################' waitforkey cnt=${#GR_index[@]} for((i=0; i<${cnt}; i++)); do index=$((${GR_index[$i]}*4)) ch="${GR_POS[$(($index+3))]}" ch="$( width_itselfl "$ch" "2" )" line="${GR_POS[$(($index+2))]}" echo "${ch} - ${line}" done waitforkey mingr_h="$(width_itselfl "$(format_ratio "${MAX_RATIO_BLOCK}" 1 )" 8)" maxgr_h="$(width_itselfl "$(format_ratio "${MIN_RATIO_BLOCK}" 1 )" 8)" echo '##############################################################################' echo '' echo '# QUADRANT GRAPH RATIO (by block count) ######################################' grh="# <<< bad ${mingr_h} compression ratio ${maxgr_h} good >>> " grh1="$grh" waitforkey2 V_MIN="$( echo "scale=6; x=((${MAX_RATIO_BLOCK} - ${MIN_RATIO_BLOCK})/${GR_W}); if(x<0.000001) x=0.000001; x=(${REPORT_RATIO_MIN} - ${MIN_RATIO_BLOCK})/x; x=${GR_W}-x; y=${GR_W}+1; if(x < -1) x=-1; if(x > y) x=y; x=x + ${GR_WM}; ${HLP_BC_FORMAT_DIGIT0} x" | $BCCMD )" if [ "${V_MIN}" -eq "${V_SPLIT}" -o "${V_MIN}" -eq "$((${GR_WM}-1))" -o "${V_MIN}" -eq "$((${GR_W} + ${GR_WM}+1))" ]; then pair=0 else pair=2 fi data=("${grdata[@]}") graphlines echo "$grh" cnt=${#GR_index_block[@]} for((i=0; i<${cnt}; i++)); do index=$((${GR_index_block[$i]}*4)) ch="${GR_POS_block[$(($index+3))]}" h=${GR_POS_block[$(($index))]} v=${GR_POS_block[$(($index+1))]} line="${data[$h]}" line="${line:0:$(($v-1))}${ch}${line:$v}" data[$h]="${line}" done cnt=${#grdata[@]} for((i=0; i<${cnt}; i++)); do if [ "$i" -eq "$((cnt-1))" ]; then echo -n -e "${data[$i]}" else echo -e "${data[$i]}" fi done waitforkey echo '' echo "$grh1" echo '##############################################################################' waitforkey cnt=${#GR_index_block[@]} for((i=0; i<${cnt}; i++)); do index=$((${GR_index_block[$i]}*4)) ch="${GR_POS_block[$(($index+3))]}" ch="$( width_itselfl "$ch" "2" )" line="${GR_POS_block[$(($index+2))]}" echo "${ch} - ${line}" done echo '##############################################################################' #clean ----------------------- if [ "${LEAVE_COMP}" -eq "0" ]; then rmdir "${TMP}/${TMPDIR}" if [ "$?" -ne "0" ]; then echo "CLEAN ERROR!, error delete '${TMP}/${TMPDIR}' directory." >&2 exit 2 fi else echo "" echo "Warning (info):" echo " Temoprary directory '${TMP}/${TMPDIR}' contains compressed files." fi echo "" exit 0Běžné spuštení pro test souborů všemi metodami a jejich kombinacemi:
find /absolute/path/dir -type f | ./comptest.bash -v -n 42 -w /absolute/path/to/save/dir/result.res -f
find /absolute/path/dir -mindepth 1 -maxdepth 1 -type d | ./comptest.bash -v -n 'e0 1 4' -w /absolute/path/to/save/dir/result.res -d
./comptest.bash -o /absolute/path/to/save/dir/result.res
./comptest.bash -o -R 0.8 -S 8388608 /absolute/path/to/save/dir/result.res
./comptest.bash -t /directory/to/save/ -T noexistsdirname -L -n allbest1 -f /full/file/path/name
echo /full/dir/path/name | ./comptest.bash -t /directory/to/save/ -T noexistsdirname -L -n allbest1 -d
kill <PID toho testu>
, snad se to zestřelí až po skončení právě testovaného souboru - po všech vybraných kompresích.)# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 82.41 % compression ratio 74.80 % good >>> # | 1 : | | # ^| : | | # ^| : | | # ^| : | | # | : | | # f| : | | # a| : | | # s| : | | # t| : | | # | : | | # s| : | | # p| : | | # e|-----------------------:------------+------------------------------------| # e| : | | # d| : | | # | : | | # s| : | | # l|7 4 : | | # o| : | | # w|~~~~~~~~~~~~5~~~~~~~~~~:~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # | 8 : | 2| # v| : | | # v| B : | 3 | # v| D 9 : | 6 | # | C : | A | # <<< bad 82.41 % compression ratio 74.80 % good >>> ############################################################################## 1 - [ gz -9 ] S: 9.49 MiB/sec; R: 81.09 %; RB: 81.09 % 2 - [ 7z.gz -txz -9 ] S: 3.65 MiB/sec; R: 74.80 %; RB: 74.80 % 3 - [ 7z ] S: 3.15 MiB/sec; R: 75.05 %; RB: 75.05 % 4 - [ gz.7z -txz -9 ] S: 4.39 MiB/sec; R: 80.41 %; RB: 80.41 % 5 - [ gz.bz2 -9 -9 ] S: 4.02 MiB/sec; R: 81.12 %; RB: 81.12 % 6 - [ 7z.bz2 -txz -9 ] S: 2.71 MiB/sec; R: 75.14 %; RB: 75.14 % 7 - [ bz2 -9 ] S: 4.40 MiB/sec; R: 82.41 %; RB: 82.41 % 8 - [ bz2.gz -9 -9 ] S: 3.71 MiB/sec; R: 82.34 %; RB: 82.34 % 9 - [ gz.bz2.7z -9 -9 -txz ] S: 2.79 MiB/sec; R: 81.12 %; RB: 81.12 % A - [ 7z.gz.bz2 -txz -9 -9 ] S: 2.54 MiB/sec; R: 75.15 %; RB: 75.15 % B - [ bz2.7z -9 -txz ] S: 2.95 MiB/sec; R: 82.33 %; RB: 82.33 % C - [ gz.7z.bz2 -9 -txz -9 ] S: 2.61 MiB/sec; R: 80.79 %; RB: 80.79 % D - [ bz2.gz.7z -9 -9 -txz ] S: 2.72 MiB/sec; R: 82.35 %; RB: 82.35 % D - [ bz2.7z.gz -9 -txz -9 ] S: 2.71 MiB/sec; R: 82.32 %; RB: 82.32 % A - [ 7z.bz2.gz -txz -9 -9 ] S: 2.47 MiB/sec; R: 75.14 %; RB: 75.14 % ##############################################################################Tady například velmi neefektivní stl data v ASCII verzi.
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 15.06 % compression ratio 8.47 % good >>> # : 6 | | # ^| | | # ^:8 | | # ^| 5 | | # : | | # f| | | # a: | | # s| | | # t: | | # | | | # s: 3 | | # p| 1 | | # e:------------------------------------+------------------------------------| # e| | 2 | # d: | | # | | | # s: | 4 | # l| | | # o: | | # w| | | # : | | # v| | 7 | # v: | 9 | # v|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~C~~~~~A~~~E~BD~~FG~~~~~~~~~~~| # : | H JI| # <<< bad 15.06 % compression ratio 8.47 % good >>> ############################################################################## 1 - [ gz -5 ] S: 33.05 MiB/sec; R: 11.95 %; RB: 12.04 % 2 - [ gz -6 ] S: 27.12 MiB/sec; R: 11.38 %; RB: 11.50 % 3 - [ gz -4 ] S: 35.60 MiB/sec; R: 12.82 %; RB: 12.91 % 4 - [ gz -7 ] S: 21.74 MiB/sec; R: 11.21 %; RB: 11.30 % 5 - [ gz -3 ] S: 51.91 MiB/sec; R: 13.99 %; RB: 14.06 % 6 - [ gz -2 ] S: 58.15 MiB/sec; R: 14.39 %; RB: 14.46 % 7 - [ gz -8 ] S: 9.84 MiB/sec; R: 10.96 %; RB: 11.03 % 8 - [ gz -1 ] S: 53.10 MiB/sec; R: 14.98 %; RB: 15.06 % 9 - [ gz.7z -txz -9 ] S: 7.31 MiB/sec; R: 10.96 %; RB: 11.03 % 9 - [ gz.bz2 -9 -9 ] S: 7.21 MiB/sec; R: 11.01 %; RB: 11.03 % 9 - [ gz -9 ] S: 6.51 MiB/sec; R: 10.95 %; RB: 11.03 % A - [ bz2 -1 ] S: 5.34 MiB/sec; R: 10.38 %; RB: 10.49 % 9 - [ gz.bz2.7z -9 -9 -txz ] S: 5.66 MiB/sec; R: 11.02 %; RB: 11.03 % B - [ bz2 -3 ] S: 4.91 MiB/sec; R: 9.84 %; RB: 9.95 % C - [ gz.7z.bz2 -9 -txz -9 ] S: 5.44 MiB/sec; R: 11.02 %; RB: 11.03 % D - [ bz2 -5 ] S: 4.62 MiB/sec; R: 9.73 %; RB: 9.82 % D - [ bz2 -4 ] S: 4.55 MiB/sec; R: 9.76 %; RB: 9.82 % E - [ bz2 -2 ] S: 4.70 MiB/sec; R: 10.02 %; RB: 10.15 % F - [ bz2 -7 ] S: 4.18 MiB/sec; R: 9.54 %; RB: 9.62 % G - [ bz2.gz -9 -9 ] S: 3.86 MiB/sec; R: 9.45 %; RB: 9.48 % G - [ bz2.7z -9 -txz ] S: 3.79 MiB/sec; R: 9.46 %; RB: 9.48 % F - [ bz2 -6 ] S: 3.77 MiB/sec; R: 9.56 %; RB: 9.62 % G - [ bz2 -9 ] S: 3.63 MiB/sec; R: 9.46 %; RB: 9.48 % G - [ bz2.7z.gz -9 -txz -9 ] S: 3.59 MiB/sec; R: 9.45 %; RB: 9.48 % F - [ bz2 -8 ] S: 3.49 MiB/sec; R: 9.55 %; RB: 9.62 % H - [ bz2.gz.7z -9 -9 -txz ] S: 3.15 MiB/sec; R: 9.45 %; RB: 9.48 % I - [ 7z.gz -txz -9 ] S: 2.87 MiB/sec; R: 8.40 %; RB: 8.47 % I - [ 7z ] S: 2.49 MiB/sec; R: 8.40 %; RB: 8.47 % J - [ 7z.bz2 -txz -9 ] S: 2.45 MiB/sec; R: 8.45 %; RB: 8.54 % J - [ 7z.bz2.gz -txz -9 -9 ] S: 2.43 MiB/sec; R: 8.45 %; RB: 8.54 % J - [ 7z.gz.bz2 -txz -9 -9 ] S: 2.15 MiB/sec; R: 8.46 %; RB: 8.54 % ##############################################################################Oproti stl v binárním formátu, kde 7z jasně vede (ne, že by na tom byl v předchozím nějak špatně, ale tak jasné to nebylo)
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 38.67 % compression ratio 20.10 % good >>> # : 3 | | # ^| | | # ^: | | # ^| 2 | | # : | | # f| 5 | | # a: | | # s| 1 | | # t: | | # | | | # s: 4 | | # p| | | # e:------------------------------------+------------------------------------| # e| 6 | | # d: | | # | 7 | | # s: | | # l| | | # o: | | # w| 8 | | # :O I F | | # v| EG D 9 | | # v:~~~~~~~~JL~~K~~~~~~~~~~~~~~~~~~A~~B~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # v| M C H | | # : | N| # <<< bad 38.67 % compression ratio 20.10 % good >>> ############################################################################## 1 - [ gz -4 ] S: 23.50 MiB/sec; R: 33.80 %; RB: 33.86 % 2 - [ gz -2 ] S: 28.88 MiB/sec; R: 35.27 %; RB: 35.33 % 3 - [ gz -1 ] S: 32.63 MiB/sec; R: 35.93 %; RB: 36.01 % 4 - [ gz -5 ] S: 19.94 MiB/sec; R: 33.49 %; RB: 33.56 % 5 - [ gz -3 ] S: 26.72 MiB/sec; R: 35.30 %; RB: 35.36 % 6 - [ gz -6 ] S: 16.11 MiB/sec; R: 33.46 %; RB: 33.51 % 7 - [ gz -7 ] S: 13.10 MiB/sec; R: 33.41 %; RB: 33.47 % 8 - [ gz -8 ] S: 7.69 MiB/sec; R: 33.31 %; RB: 33.39 % 9 - [ gz -9 ] S: 5.88 MiB/sec; R: 33.31 %; RB: 33.39 % A - [ gz.bz2 -9 -9 ] S: 4.33 MiB/sec; R: 30.61 %; RB: 30.71 % B - [ gz.7z -txz -9 ] S: 3.65 MiB/sec; R: 29.89 %; RB: 29.98 % C - [ gz.bz2.7z -9 -9 -txz ] S: 3.29 MiB/sec; R: 30.61 %; RB: 30.71 % D - [ bz2.gz -9 -9 ] S: 5.23 MiB/sec; R: 35.65 %; RB: 35.72 % E - [ bz2 -5 ] S: 5.86 MiB/sec; R: 36.49 %; RB: 36.55 % F - [ bz2 -4 ] S: 6.09 MiB/sec; R: 36.71 %; RB: 36.80 % E - [ bz2 -7 ] S: 5.67 MiB/sec; R: 36.42 %; RB: 36.50 % G - [ bz2 -8 ] S: 5.57 MiB/sec; R: 36.39 %; RB: 36.46 % F - [ bz2 -3 ] S: 6.17 MiB/sec; R: 36.94 %; RB: 36.99 % H - [ gz.7z.bz2 -9 -txz -9 ] S: 2.63 MiB/sec; R: 30.04 %; RB: 30.13 % I - [ bz2 -2 ] S: 6.09 MiB/sec; R: 37.63 %; RB: 37.66 % J - [ bz2 -6 ] S: 4.63 MiB/sec; R: 36.60 %; RB: 36.66 % K - [ bz2.7z.gz -9 -txz -9 ] S: 3.85 MiB/sec; R: 35.63 %; RB: 35.70 % L - [ bz2 -9 ] S: 4.30 MiB/sec; R: 36.30 %; RB: 36.38 % M - [ bz2.7z -9 -txz ] S: 3.28 MiB/sec; R: 35.65 %; RB: 35.74 % M - [ bz2.gz.7z -9 -9 -txz ] S: 3.25 MiB/sec; R: 35.65 %; RB: 35.72 % N - [ 7z.gz -txz -9 ] S: 1.80 MiB/sec; R: 20.00 %; RB: 20.10 % N - [ 7z ] S: 1.79 MiB/sec; R: 20.02 %; RB: 20.10 % O - [ bz2 -1 ] S: 6.07 MiB/sec; R: 38.63 %; RB: 38.67 % N - [ 7z.bz2 -txz -9 ] S: 1.64 MiB/sec; R: 20.11 %; RB: 20.21 % N - [ 7z.gz.bz2 -txz -9 -9 ] S: 1.57 MiB/sec; R: 20.11 %; RB: 20.21 % N - [ 7z.bz2.gz -txz -9 -9 ] S: 1.41 MiB/sec; R: 20.11 %; RB: 20.21 % ##############################################################################Oproti tomu jak se mu na specifických TIFF souborech až tak nedařilo (a na Jpeg souborech generoval decompresi místo comprese - zvětšoval filesy).
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 82.40 % compression ratio 66.49 % good >>> # | B : | | # ^| A : | | # ^| 8 : | | # ^| : | | # | : | | # f| C : | | # a| E : | | # s| D : | | # t| F : | | # | : | | # s| : | | # p| : | | # e|-----------:------------------------+------------------------------------| # e| : | | # d| : | | # | : | | # s| : | | # l| : | 312| # o| : | 6 54| # w| : | 7 | # |~~H~~~~~~~~:~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # v|I : | 9 | # v| : | | # v|K : | G | # | : | J | # <<< bad 82.40 % compression ratio 66.49 % good >>> ############################################################################## 1 - [ bz2 -3 ] S: 5.39 MiB/sec; R: 66.61 %; RB: 66.65 % 2 - [ bz2 -5 ] S: 5.27 MiB/sec; R: 66.51 %; RB: 66.53 % 3 - [ bz2 -2 ] S: 5.31 MiB/sec; R: 66.89 %; RB: 66.94 % 4 - [ bz2 -6 ] S: 5.11 MiB/sec; R: 66.49 %; RB: 66.52 % 4 - [ bz2 -4 ] S: 5.06 MiB/sec; R: 66.46 %; RB: 66.49 % 4 - [ bz2 -8 ] S: 4.98 MiB/sec; R: 66.54 %; RB: 66.58 % 5 - [ bz2 -9 ] S: 4.88 MiB/sec; R: 66.63 %; RB: 66.67 % 4 - [ bz2 -7 ] S: 4.80 MiB/sec; R: 66.53 %; RB: 66.57 % 6 - [ bz2 -1 ] S: 4.81 MiB/sec; R: 67.77 %; RB: 67.81 % 7 - [ bz2.gz -9 -9 ] S: 4.15 MiB/sec; R: 66.62 %; RB: 66.66 % 8 - [ gz -3 ] S: 14.64 MiB/sec; R: 80.95 %; RB: 80.98 % 9 - [ bz2.7z -9 -txz ] S: 3.34 MiB/sec; R: 66.63 %; RB: 66.68 % A - [ gz -2 ] S: 14.90 MiB/sec; R: 81.13 %; RB: 81.15 % 9 - [ bz2.7z.gz -9 -txz -9 ] S: 3.22 MiB/sec; R: 66.63 %; RB: 66.67 % B - [ gz -1 ] S: 15.52 MiB/sec; R: 81.38 %; RB: 81.42 % 9 - [ bz2.gz.7z -9 -9 -txz ] S: 3.07 MiB/sec; R: 66.63 %; RB: 66.67 % C - [ gz -5 ] S: 12.55 MiB/sec; R: 82.05 %; RB: 82.06 % D - [ gz -7 ] S: 11.44 MiB/sec; R: 82.01 %; RB: 82.05 % E - [ gz -4 ] S: 12.19 MiB/sec; R: 82.12 %; RB: 82.17 % F - [ gz -9 ] S: 11.10 MiB/sec; R: 82.00 %; RB: 82.03 % F - [ gz -6 ] S: 10.96 MiB/sec; R: 82.02 %; RB: 82.05 % F - [ gz -8 ] S: 10.78 MiB/sec; R: 82.01 %; RB: 82.04 % G - [ 7z ] S: 2.25 MiB/sec; R: 68.73 %; RB: 68.79 % G - [ 7z.gz -txz -9 ] S: 2.16 MiB/sec; R: 68.75 %; RB: 68.80 % H - [ gz.7z -txz -9 ] S: 3.99 MiB/sec; R: 82.01 %; RB: 82.03 % I - [ gz.bz2 -9 -9 ] S: 2.96 MiB/sec; R: 82.36 %; RB: 82.40 % J - [ 7z.gz.bz2 -txz -9 -9 ] S: 1.55 MiB/sec; R: 69.07 %; RB: 69.11 % J - [ 7z.bz2 -txz -9 ] S: 1.53 MiB/sec; R: 69.06 %; RB: 69.09 % K - [ gz.bz2.7z -9 -9 -txz ] S: 2.13 MiB/sec; R: 82.36 %; RB: 82.40 % K - [ gz.7z.bz2 -9 -txz -9 ] S: 2.02 MiB/sec; R: 82.36 %; RB: 82.40 % J - [ 7z.bz2.gz -txz -9 -9 ] S: 1.46 MiB/sec; R: 69.06 %; RB: 69.10 % ##############################################################################Ale zase na zdrojácích (c++)
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 30.87 % compression ratio 17.80 % good >>> # :7 | | # ^| | | # ^: | | # ^| 6 | | # : | | # f| 4 | | # a: | | # s| 2 | | # t: | | # | 1 | | # s: | | # p| | | # e:------------------------------------+------------------------------------| # e| 3 | | # d: 5 | | # | | | # s: | | # l| | | # o: | | # w| 8 | | # : | | # v| | | # v:~~~~~~~~~~~~~~G~~~~~~~~B~~9ACD~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # v| J KH EF | | # : M I | L| # <<< bad 30.87 % compression ratio 17.80 % good >>> ############################################################################## 1 - [ gz -5 ] S: 22.08 MiB/sec; R: 28.90 %; RB: 28.90 % 2 - [ gz -4 ] S: 25.01 MiB/sec; R: 29.39 %; RB: 29.39 % 3 - [ gz -6 ] S: 16.91 MiB/sec; R: 28.62 %; RB: 28.62 % 4 - [ gz -3 ] S: 26.84 MiB/sec; R: 29.94 %; RB: 29.95 % 5 - [ gz -7 ] S: 15.07 MiB/sec; R: 28.52 %; RB: 28.52 % 6 - [ gz -2 ] S: 30.40 MiB/sec; R: 30.40 %; RB: 30.40 % 7 - [ gz -1 ] S: 33.94 MiB/sec; R: 30.86 %; RB: 30.87 % 8 - [ gz -8 ] S: 8.39 MiB/sec; R: 28.37 %; RB: 28.37 % 9 - [ bz2 -2 ] S: 5.03 MiB/sec; R: 26.20 %; RB: 26.21 % A - [ bz2 -3 ] S: 4.70 MiB/sec; R: 26.00 %; RB: 26.00 % B - [ bz2 -1 ] S: 4.95 MiB/sec; R: 26.66 %; RB: 26.66 % C - [ bz2 -4 ] S: 4.39 MiB/sec; R: 25.86 %; RB: 25.86 % C - [ bz2 -5 ] S: 4.02 MiB/sec; R: 25.78 %; RB: 25.78 % D - [ bz2 -7 ] S: 3.93 MiB/sec; R: 25.63 %; RB: 25.63 % C - [ bz2 -6 ] S: 3.91 MiB/sec; R: 25.70 %; RB: 25.70 % E - [ bz2 -8 ] S: 3.77 MiB/sec; R: 25.60 %; RB: 25.60 % F - [ bz2.gz -9 -9 ] S: 3.22 MiB/sec; R: 25.44 %; RB: 25.44 % F - [ bz2 -9 ] S: 3.11 MiB/sec; R: 25.49 %; RB: 25.49 % G - [ gz -9 ] S: 4.00 MiB/sec; R: 28.33 %; RB: 28.33 % F - [ bz2.gz.7z -9 -9 -txz ] S: 2.51 MiB/sec; R: 25.44 %; RB: 25.44 % F - [ bz2.7z.gz -9 -txz -9 ] S: 2.49 MiB/sec; R: 25.44 %; RB: 25.44 % H - [ gz.7z -txz -9 ] S: 2.66 MiB/sec; R: 26.76 %; RB: 26.76 % I - [ bz2.7z -9 -txz ] S: 2.38 MiB/sec; R: 25.44 %; RB: 25.45 % J - [ gz.bz2 -9 -9 ] S: 2.85 MiB/sec; R: 28.31 %; RB: 28.32 % K - [ gz.7z.bz2 -9 -txz -9 ] S: 2.48 MiB/sec; R: 26.87 %; RB: 26.88 % L - [ 7z.gz -txz -9 ] S: 1.97 MiB/sec; R: 17.80 %; RB: 17.80 % L - [ 7z ] S: 1.90 MiB/sec; R: 17.84 %; RB: 17.84 % M - [ gz.bz2.7z -9 -9 -txz ] S: 2.22 MiB/sec; R: 28.31 %; RB: 28.32 % L - [ 7z.bz2 -txz -9 ] S: 1.83 MiB/sec; R: 17.88 %; RB: 17.88 % L - [ 7z.bz2.gz -txz -9 -9 ] S: 1.79 MiB/sec; R: 17.88 %; RB: 17.88 % L - [ 7z.gz.bz2 -txz -9 -9 ] S: 1.77 MiB/sec; R: 17.88 %; RB: 17.88 % ##############################################################################Jinak na VMWare adresáře virtuálních strojů je
7z
i 10 % efektivnější než bz2
či gz
.bc
je vhodné dávat mezeru, protože XY=-5; echo "10-${XY}" | bc
to nesežere.
Tiskni
Sdílej:
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 28.33 % compression ratio 16.58 % good >>> # :2 | | # ^| | | # ^:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # ^| | | # : | | # f| | | # a: | | # s| 1 | | # t: | | # | | | # s: | | # p| | | # e:------------------------------------+------------------------------------| # e| | | # d: | | # | | | # s: | | # l| | | # o: | | # w| | | # : | | # v| | | # v: | | # v| | | # : | 4 3| # <<< bad 28.33 % compression ratio 16.58 % good >>> ############################################################################## 1 - [ bz2 -9 ] S: 3.42 MiB/sec; R: 25.49 %; RB: 25.49 % 2 - [ gz -9 ] S: 4.27 MiB/sec; R: 28.33 %; RB: 28.33 % 3 - [ lrzip -L 9 ] S: 1.38 MiB/sec; R: 16.58 %; RB: 16.58 % 4 - [ rzip -9 ] S: 1.37 MiB/sec; R: 18.68 %; RB: 18.68 % ##############################################################################STL soubory (binární):
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 36.38 % compression ratio 20.46 % good >>> # : 1 | | # ^| | | # ^: | | # ^|2 | | # : | | # f| | | # a: | | # s| | | # t: | | # | | | # s: | | # p| | | # e:------------------------------------+------------------------------------| # e|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # d: | | # | | | # s: | | # l| | | # o: | | # w|3 | | # : | | # v| | | # v: | | # v| | | # : | 4| # <<< bad 36.38 % compression ratio 20.46 % good >>> ############################################################################## 1 - [ gz -9 ] S: 7.02 MiB/sec; R: 33.31 %; RB: 33.39 % 2 - [ bz2 -9 ] S: 6.28 MiB/sec; R: 36.30 %; RB: 36.38 % 3 - [ rzip -9 ] S: 2.52 MiB/sec; R: 36.26 %; RB: 36.34 % 4 - [ lrzip -L 9 ] S: 1.41 MiB/sec; R: 20.38 %; RB: 20.46 % ##############################################################################Virtuály zatím nemám :(, to chvíli trvá…
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 40.37 % compression ratio 25.89 % good >>> # :3 | | # ^| | | # ^: | | # ^| | | # : | | # f| | | # a: | | # s| | | # t: | | # | 2 | | # s: | | # p| | | # e:------------------------------------+------------------------------------| # e| | | # d: | | # |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # s: | | # l| | 1 | # o: | | # w| | | # : | | # v| | | # v: | | # v| | | # : | 4| # <<< bad 40.37 % compression ratio 25.89 % good >>> ############################################################################## 1 - [ rzip -9 ] S: 3.79 MiB/sec; R: 32.03 %; RB: 32.03 % 2 - [ bz2 -9 ] S: 4.79 MiB/sec; R: 38.55 %; RB: 38.55 % 3 - [ gz -9 ] S: 5.89 MiB/sec; R: 40.37 %; RB: 40.37 % 4 - [ lrzip -L 9 ] S: 2.95 MiB/sec; R: 25.89 %; RB: 25.89 % ##############################################################################
# QUADRANT GRAPH RATIO (by block count) ###################################### # <<< bad 100.25 % compression ratio 99.17 % good >>> # | | 1 : # ^| | | # ^| | 2 : # ^| | 4 | # | | 53 : # f| | | # a| | : # s| | 6 | # t| | : # | | 7 | # s| | : # p| | 8 | # e|------------------------------------+------------------------------------: # e| | | # d| | 9 : # | | | # s| | : # l| | | # o| | : # w|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # | | H D C A : # v| M | E G B F| # v|O |LKI : # v| | N J| # | |PQ R : # <<< bad 100.25 % compression ratio 99.17 % good >>> ############################################################################## 1 - [ gz -3 ] S: 14.14 MiB/sec; R: 99.65 %; RB: 99.65 % 2 - [ gz -2 ] S: 13.27 MiB/sec; R: 99.65 %; RB: 99.65 % 3 - [ gz -1 ] S: 12.20 MiB/sec; R: 99.66 %; RB: 99.66 % 4 - [ gz -6 ] S: 12.32 MiB/sec; R: 99.68 %; RB: 99.67 % 5 - [ gz -8 ] S: 12.09 MiB/sec; R: 99.68 %; RB: 99.67 % 6 - [ gz -4 ] S: 10.59 MiB/sec; R: 99.68 %; RB: 99.67 % 7 - [ gz -9 ] S: 9.28 MiB/sec; R: 99.68 %; RB: 99.67 % 8 - [ gz -7 ] S: 8.23 MiB/sec; R: 99.68 %; RB: 99.67 % 9 - [ gz -5 ] S: 6.84 MiB/sec; R: 99.68 %; RB: 99.67 % A - [ bz2 -7 ] S: 3.62 MiB/sec; R: 99.25 %; RB: 99.25 % B - [ bz2 -8 ] S: 3.25 MiB/sec; R: 99.21 %; RB: 99.21 % C - [ bz2 -4 ] S: 3.50 MiB/sec; R: 99.42 %; RB: 99.42 % D - [ bz2 -3 ] S: 3.73 MiB/sec; R: 99.51 %; RB: 99.51 % E - [ bz2 -5 ] S: 3.19 MiB/sec; R: 99.36 %; RB: 99.36 % F - [ bz2 -9 ] S: 2.90 MiB/sec; R: 99.18 %; RB: 99.17 % F - [ bz2.gz -9 -9 ] S: 2.80 MiB/sec; R: 99.17 %; RB: 99.17 % G - [ bz2 -6 ] S: 2.85 MiB/sec; R: 99.30 %; RB: 99.30 % H - [ bz2 -2 ] S: 3.50 MiB/sec; R: 99.65 %; RB: 99.64 % I - [ gz.bz2 -9 -9 ] S: 2.71 MiB/sec; R: 99.68 %; RB: 99.67 % J - [ bz2.7z.gz -9 -txz -9 ] S: 2.17 MiB/sec; R: 99.18 %; RB: 99.18 % K - [ gz.7z -txz -9 ] S: 2.69 MiB/sec; R: 99.68 %; RB: 99.68 % L - [ 7z.gz -txz -9 ] S: 2.67 MiB/sec; R: 99.70 %; RB: 99.70 % M - [ bz2 -1 ] S: 3.29 MiB/sec; R: 99.92 %; RB: 99.92 % J - [ bz2.7z -9 -txz ] S: 2.07 MiB/sec; R: 99.18 %; RB: 99.18 % J - [ bz2.gz.7z -9 -9 -txz ] S: 1.97 MiB/sec; R: 99.18 %; RB: 99.18 % N - [ gz.bz2.7z -9 -9 -txz ] S: 1.86 MiB/sec; R: 99.68 %; RB: 99.68 % O - [ 7z ] S: 2.65 MiB/sec; R: 100.25 %; RB: 100.25 % P - [ 7z.gz.bz2 -txz -9 -9 ] S: 1.61 MiB/sec; R: 99.70 %; RB: 99.70 % Q - [ gz.7z.bz2 -9 -txz -9 ] S: 1.59 MiB/sec; R: 99.68 %; RB: 99.68 % R - [ 7z.bz2 -txz -9 ] S: 1.53 MiB/sec; R: 99.39 %; RB: 99.39 % R - [ 7z.bz2.gz -txz -9 -9 ] S: 1.48 MiB/sec; R: 99.39 %; RB: 99.39 % ##############################################################################7zip soubory zvětšuje