Improve type-inference performance (#809)

* To-do items for broader platform/go-version benchmarking

* neaten inferrer API

* extend type-inference unit-test cases

* Add benchmark scripts for comparing compiler versions

* mlr version in addition to mlr --version

* some go-benchmark files for Mac/Linux perf comparisons

* neaten perf-scripts

* merge

* type-scan optimization tests

* type-scan optimization infra

* test new inferrer

* mlr --time option

* include --cpuprofile and --traceprofile in on-line help

* sharpen inferred/deferred-type API distinction

* replace old inferrer with newer/faster

* update docs for new type-inferrer
This commit is contained in:
John Kerl 2021-12-27 00:54:21 -05:00 committed by GitHub
parent 5e8d3fddd0
commit e10fee0724
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
47 changed files with 1595 additions and 381 deletions

View file

@ -31,6 +31,24 @@ install: build
unit-test ut:
go test github.com/johnkerl/miller/internal/pkg/...
ut-lib:
go test github.com/johnkerl/miller/internal/pkg/lib...
ut-scan:
go test github.com/johnkerl/miller/internal/pkg/scan/...
ut-mlv:
go test github.com/johnkerl/miller/internal/pkg/mlrval/...
ut-bifs:
go test github.com/johnkerl/miller/internal/pkg/bifs/...
ut-input:
go test github.com/johnkerl/miller/internal/pkg/input/...
bench:
go test -run=nonesuch -bench=. github.com/johnkerl/miller/internal/pkg/...
bench-mlv:
go test -run=nonesuch -bench=. github.com/johnkerl/miller/internal/pkg/mlrval/...
bench-input:
go test -run=nonesuch -bench=. github.com/johnkerl/miller/internal/pkg/input/...
# ----------------------------------------------------------------
# Regression tests (large number)
#
@ -41,12 +59,22 @@ unit-test ut:
regression-test:
go test -v regression_test.go
# ----------------------------------------------------------------
# Experimental executables:
scan:
go build github.com/johnkerl/miller/cmd/scan
# ----------------------------------------------------------------
# Formatting
# go fmt ./... finds experimental C files which we want to ignore.
fmt:
-go fmt ./cmd/...
-go fmt ./internal/pkg/...
-go fmt ./regression_test.go
# ----------------------------------------------------------------
# Static analysis
# Needs first: go install honnef.co/go/tools/cmd/staticcheck@latest
# See also: https://staticcheck.io
staticcheck:
@ -93,4 +121,4 @@ release_tarball: build check
# ================================================================
# Go does its own dependency management, outside of make.
.PHONY: build mlr check unit_test regression_test fmt staticcheck dev docs
.PHONY: build mlr scan check unit_test regression_test bench fmt staticcheck dev docs