Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Performance tests of quoting and dequoting, printf -v turned out slow
Hello
Two scripts:
- short.txt
Test of quoting, (q)-flag vs. printf -v output '%q '
result: 35 ms vs. 26.6 sec
- Q_short.txt – test of dequoting, (Q)-flag vs. eval "str=$quoted"
result: 25 ms vs. 77 ms
I've compared "printf -v" code to Bash 4.4 and it yields 227 ms there, so much better than 26.6 sec. So while "Bash can serialize/deserialize too, let's compare speed of this method" is interesting thing and I share, performance of "printf -v" on Zsh is troubling. Any idea from where it comes from and if it can be improved?
https://github.com/zdharma/hacking-private/tree/master/quoting
--
Sebastian Gniazdowski
psprint /at/ zdharma.org
# This file should be sourced.
# It tests performance of dequoting, (Q) vs eval "s=$quoted"
INPUT='ice as"program" pick"$ZPFX/bin/prll_(qer|bfr)" src"prll.sh" make"install PREFIX=$ZPFX"'
INPUT="${(q)INPUT}"
# The same output
eval "str=$INPUT"
print -r -- "$str"
print -r -- "${(Q)INPUT}"
Qflag() {
local OUTPUT
repeat 50000; do
OUTPUT="${(Q)INPUT}"
done
}
evl() {
local OUTPUT
repeat 50000; do
eval "OUTPUT=$INPUT"
done
}
typeset -F2 SECONDS=0
Qflag
print "(Q)-flag result: $SECONDS"
SECONDS=0
evl
print "eval result: $SECONDS"
# This file should be sourced.
# It tests performance of quoting, (q) vs printf '%q '.
INPUT='ice as"program" pick"$ZPFX/bin/prll_(qer|bfr)" src"prll.sh" make"install PREFIX=$ZPFX"'
# The same output
printf '%q ' "$INPUT"
print
print -r -- "${(q)INPUT}"
qflag() {
local OUTPUT
repeat 10000; do
OUTPUT="${(q)INPUT}"
done
}
prtf() {
local OUTPUT
repeat 10000; do
printf -v OUTPUT '%q ' "$INPUT"
done
}
typeset -F3 SECONDS=0
qflag
print "(q)-flag result: $SECONDS"
SECONDS=0
prtf
print "printf result: $SECONDS"
Messages sorted by:
Reverse Date,
Date,
Thread,
Author