mirror of
https://github.com/Bodigrim/tasty-bench.git
synced 2024-08-17 04:30:21 +03:00
Improve AWK incantation
This commit is contained in:
parent
fe8fa28f3f
commit
17fcaa14fd
@ -488,7 +488,7 @@ to focus on rerunning failing items only.
|
|||||||
If you wish to compare two CSV reports non-interactively, here is a handy `awk` incantation:
|
If you wish to compare two CSV reports non-interactively, here is a handy `awk` incantation:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
awk 'BEGIN{FS=",";OFS=",";print "Name,Old,New,Ratio"}FNR==1{trueNF=NF;next}NF<trueNF{print "Benchmark names should not contain newlines";exit 1}FNR==NR{oldTime=$(NF-trueNF+2);NF-=trueNF-1;a[$0]=oldTime;next}{newTime=$(NF-trueNF+2);NF-=trueNF-1;print $0,a[$0],newTime,newTime/a[$0];gs+=log(newTime/a[$0]);gc++}END{if(gc>0)print "Geometric mean,,",exp(gs/gc)}' old.csv new.csv
|
awk 'BEGIN{FS=",";OFS=",";print "Name,Old,New,Ratio"}FNR==1{trueNF=NF;next}NF<trueNF{print "Benchmark names should not contain newlines";exit 1}FNR==NR{oldTime=$(NF-trueNF+2);NF-=trueNF-1;a[$0]=oldTime;next}{newTime=$(NF-trueNF+2);NF-=trueNF-1;if(a[$0]){print $0,a[$0],newTime,newTime/a[$0];gs+=log(newTime/a[$0]);gc++}}END{if(gc>0)print "Geometric mean,,",exp(gs/gc)}' old.csv new.csv
|
||||||
```
|
```
|
||||||
|
|
||||||
A larger shell snippet to compare two `git` commits can be found in `compare_benches.sh`.
|
A larger shell snippet to compare two `git` commits can be found in `compare_benches.sh`.
|
||||||
|
@ -25,7 +25,7 @@ compare_benches () {
|
|||||||
cabal run -v0 benchmarks -- --baseline "$OLDCSV" --csv "$NEWCSV" "$@" && \
|
cabal run -v0 benchmarks -- --baseline "$OLDCSV" --csv "$NEWCSV" "$@" && \
|
||||||
git checkout -q "@{-2}" && \
|
git checkout -q "@{-2}" && \
|
||||||
|
|
||||||
awk 'BEGIN{FS=",";OFS=",";print "Name,'"$OLD"','"$NEW"',Ratio"}FNR==1{trueNF=NF;next}NF<trueNF{print "Benchmark names should not contain newlines";exit 1}FNR==NR{oldTime=$(NF-trueNF+2);NF-=trueNF-1;a[$0]=oldTime;next}{newTime=$(NF-trueNF+2);NF-=trueNF-1;print $0,a[$0],newTime,newTime/a[$0];gs+=log(newTime/a[$0]);gc++}END{if(gc>0)print "Geometric mean,,",exp(gs/gc)}' "$OLDCSV" "$NEWCSV" > "$OLDVSNEWCSV" && \
|
awk 'BEGIN{FS=",";OFS=",";print "Name,'"$OLD"','"$NEW"',Ratio"}FNR==1{trueNF=NF;next}NF<trueNF{print "Benchmark names should not contain newlines";exit 1}FNR==NR{oldTime=$(NF-trueNF+2);NF-=trueNF-1;a[$0]=oldTime;next}{newTime=$(NF-trueNF+2);NF-=trueNF-1;if(a[$0]){print $0,a[$0],newTime,newTime/a[$0];gs+=log(newTime/a[$0]);gc++}}END{if(gc>0)print "Geometric mean,,",exp(gs/gc)}' "$OLDCSV" "$NEWCSV" > "$OLDVSNEWCSV" && \
|
||||||
|
|
||||||
trap - INT
|
trap - INT
|
||||||
}
|
}
|
||||||
|
@ -451,7 +451,7 @@ package to focus on rerunning failing items only.
|
|||||||
If you wish to compare two CSV reports non-interactively, here is a
|
If you wish to compare two CSV reports non-interactively, here is a
|
||||||
handy @awk@ incantation:
|
handy @awk@ incantation:
|
||||||
|
|
||||||
> awk 'BEGIN{FS=",";OFS=",";print "Name,Old,New,Ratio"}FNR==1{trueNF=NF;next}NF<trueNF{print "Benchmark names should not contain newlines";exit 1}FNR==NR{oldTime=$(NF-trueNF+2);NF-=trueNF-1;a[$0]=oldTime;next}{newTime=$(NF-trueNF+2);NF-=trueNF-1;print $0,a[$0],newTime,newTime/a[$0];gs+=log(newTime/a[$0]);gc++}END{if(gc>0)print "Geometric mean,,",exp(gs/gc)}' old.csv new.csv
|
> awk 'BEGIN{FS=",";OFS=",";print "Name,Old,New,Ratio"}FNR==1{trueNF=NF;next}NF<trueNF{print "Benchmark names should not contain newlines";exit 1}FNR==NR{oldTime=$(NF-trueNF+2);NF-=trueNF-1;a[$0]=oldTime;next}{newTime=$(NF-trueNF+2);NF-=trueNF-1;if(a[$0]){print $0,a[$0],newTime,newTime/a[$0];gs+=log(newTime/a[$0]);gc++}}END{if(gc>0)print "Geometric mean,,",exp(gs/gc)}' old.csv new.csv
|
||||||
|
|
||||||
A larger shell snippet to compare two @git@ commits can be found in
|
A larger shell snippet to compare two @git@ commits can be found in
|
||||||
@compare_benches.sh@.
|
@compare_benches.sh@.
|
||||||
|
Loading…
Reference in New Issue
Block a user