Copy-reduction performance in Mlrval.String() (#787)

This commit is contained in:
John Kerl 2021-12-21 09:53:03 -05:00 committed by GitHub
parent f4ba0227f8
commit 2a2ff7a768
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 35 additions and 86 deletions

View file

@ -7,8 +7,11 @@ import (
)
// Must have non-pointer receiver in order to implement the fmt.Stringer
// interface to make this printable via fmt.Println et al.
func (mv Mlrval) String() string {
// interface to make this printable via fmt.Println et al. However, that
// results in a needless copy of the Mlrval. So, we intentionally use pointer
// receiver, and if we need to print to stdout, we can fmt.Printf with "%s" and
// mv.String().
func (mv *Mlrval) String() string {
// TODO: comment re deferral -- important perf effect!
// if mv.IsFloat() && floatOutputFormatter != nil
// if mv.mvtype == MT_FLOAT && floatOutputFormatter != nil {

View file

@ -1,41 +1,9 @@
echo; for m in mlr5 ~/tmp/miller/mlr "./mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
check \
| md5sum
done
mlrs="mlr5 ~/tmp/miller/mlr ./mlr"
echo; for m in mlr5 ~/tmp/miller/mlr "./mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
cat \
| md5sum;
done
echo; for m in mlr5 ~/tmp/miller/mlr "./mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
head \
| md5sum;
done
echo; for m in mlr5 ~/tmp/miller/mlr "./mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
tail \
| md5sum;
done
echo; for m in mlr5 ~/tmp/miller/mlr "./mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
tac \
| md5sum;
done
echo; for m in mlr5 ~/tmp/miller/mlr "./mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
sort -f shape \
| md5sum;
done
echo; for m in mlr5 ~/tmp/miller/mlr "./mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
sort -n quantity \
| md5sum;
done
echo; for mlr in $mlrs; do justtime $mlr --csv --from ~/tmp/big.csv check | md5sum; done
echo; for mlr in $mlrs; do justtime $mlr --csv --from ~/tmp/big.csv cat | md5sum; done
echo; for mlr in $mlrs; do justtime $mlr --csv --from ~/tmp/big.csv head | md5sum; done
echo; for mlr in $mlrs; do justtime $mlr --csv --from ~/tmp/big.csv tail | md5sum; done
echo; for mlr in $mlrs; do justtime $mlr --csv --from ~/tmp/big.csv tac | md5sum; done
echo; for mlr in $mlrs; do justtime $mlr --csv --from ~/tmp/big.csv sort -f shape | md5sum; done
echo; for mlr in $mlrs; do justtime $mlr --csv --from ~/tmp/big.csv sort -n quantity | md5sum; done

View file

@ -1,26 +1,28 @@
echo; for m in mlr5 ~/tmp/miller/mlr "mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
mlrs="mlr5 ~/tmp/miller/mlr ./mlr"
echo; for mlr in $mlrs; do
justtime $mlr --csv --from ~/tmp/big.csv \
then put -f scripts/chain-1.mlr \
| md5sum;
done
echo; for m in mlr5 ~/tmp/miller/mlr "mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
echo; for mlr in $mlrs; do
justtime $mlr --csv --from ~/tmp/big.csv \
then put -f scripts/chain-1.mlr \
then put -f scripts/chain-1.mlr \
| md5sum;
done
echo; for m in mlr5 ~/tmp/miller/mlr "mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
echo; for mlr in $mlrs; do
justtime $mlr --csv --from ~/tmp/big.csv \
then put -f scripts/chain-1.mlr \
then put -f scripts/chain-1.mlr \
then put -f scripts/chain-1.mlr \
| md5sum;
done
echo; for m in mlr5 ~/tmp/miller/mlr "mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
echo; for mlr in $mlrs; do
justtime $mlr --csv --from ~/tmp/big.csv \
then put -f scripts/chain-1.mlr \
then put -f scripts/chain-1.mlr \
then put -f scripts/chain-1.mlr \
@ -28,8 +30,8 @@ echo; for m in mlr5 ~/tmp/miller/mlr "mlr -S" mlr; do
| md5sum;
done
echo; for m in mlr5 ~/tmp/miller/mlr "mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
echo; for mlr in $mlrs; do
justtime $mlr --csv --from ~/tmp/big.csv \
then put -f scripts/chain-1.mlr \
then put -f scripts/chain-1.mlr \
then put -f scripts/chain-1.mlr \
@ -38,8 +40,8 @@ echo; for m in mlr5 ~/tmp/miller/mlr "mlr -S" mlr; do
| md5sum;
done
echo; for m in mlr5 ~/tmp/miller/mlr "mlr -S" mlr; do
justtime $m --csv --from ~/tmp/big.csv \
echo; for mlr in $mlrs; do
justtime $mlr --csv --from ~/tmp/big.csv \
then put -f scripts/chain-1.mlr \
then put -f scripts/chain-1.mlr \
then put -f scripts/chain-1.mlr \

View file

@ -2,37 +2,12 @@
ourdir=$(dirname $0)
$ourdir/time-big-file dkvp mlr5
$ourdir/time-big-file dkvp ~/tmp/miller/mlr
$ourdir/time-big-file dkvp 'mlr -S'
$ourdir/time-big-file dkvp mlr
echo
mlrs="mlr5 ~/tmp/miller/mlr ./mlr"
$ourdir/time-big-file nidx mlr5
$ourdir/time-big-file nidx ~/tmp/miller/mlr
$ourdir/time-big-file nidx 'mlr -S'
$ourdir/time-big-file nidx mlr
echo
echo; for mlr in $mlrs; do $ourdir/time-big-file csv $mlr; done
echo; for mlr in $mlrs; do $ourdir/time-big-file csvlite $mlr; done
echo; for mlr in $mlrs; do $ourdir/time-big-file dkvp $mlr; done
echo; for mlr in $mlrs; do $ourdir/time-big-file nidx $mlr; done
echo; for mlr in $mlrs; do $ourdir/time-big-file xtab $mlr; done
echo; for mlr in $mlrs; do $ourdir/time-big-file json $mlr; done
$ourdir/time-big-file xtab mlr5
$ourdir/time-big-file xtab ~/tmp/miller/mlr
$ourdir/time-big-file xtab 'mlr -S'
$ourdir/time-big-file xtab mlr
echo
$ourdir/time-big-file csv mlr5
$ourdir/time-big-file csv ~/tmp/miller/mlr
$ourdir/time-big-file csv 'mlr -S'
$ourdir/time-big-file csv mlr
echo
$ourdir/time-big-file csvlite mlr5
$ourdir/time-big-file csvlite ~/tmp/miller/mlr
$ourdir/time-big-file csvlite 'mlr -S'
$ourdir/time-big-file csvlite mlr
echo
$ourdir/time-big-file json mlr5
$ourdir/time-big-file json ~/tmp/miller/mlr
$ourdir/time-big-file json 'mlr -S'
$ourdir/time-big-file json mlr

View file

@ -2,6 +2,7 @@
PUNCHDOWN LIST
* blockers:
- more linux perf checks
- mlr -O / abor!
- --ifs-regex & --ips-regex -- guessing is not safe as evidence by '.' and '|'
- big-picture item @ Rmd (csv memes; and beyond); also webdoc intro page