* plugin/file: improve performance of function tree.less(..)
PrevLabel always begins its iteration from the tail of domain name.
less(..) loop can improve its performance by calling PrevLabel starting
from the last processed label.
As the benchmark results showed, the performance is improved by about 15%.
$ go test -bench=Less -run=^$
goos: linux
goarch: amd64
pkg: github.com/coredns/coredns/plugin/file/tree
cpu: Intel(R) Xeon(R) Platinum 8336C CPU @ 2.30GHz
BenchmarkLess/base-16 99003 12105 ns/op
BenchmarkLess/optimized-16 114522 10590 ns/op
PASS
ok github.com/coredns/coredns/plugin/file/tree 2.416s
Signed-off-by: yuwenchao <ywc689@163.com>
* plugin/file: performance enhancement for nameFromRight(..)
Similar to tree.less(..), performance of function nameFromRight
can boost by utilizing dns.PrevLabel more efficiently.
As benchmark tests shown, performance of this function with the
optimization is gained by double or triple.
* Benchmark test result for the original implementation:
BenchmarkNameFromRight/i0_origin-16 430719652 2.794 ns/op
BenchmarkNameFromRight/eq_origin_i1_shot-16 30933135 37.52 ns/op
BenchmarkNameFromRight/two_labels_i1-16 29375857 40.71 ns/op
BenchmarkNameFromRight/two_labels_i2-16 18556830 63.97 ns/op
BenchmarkNameFromRight/two_labels_i3_shot-16 14678812 84.73 ns/op
BenchmarkNameFromRight/ten_labels_i5-16 8522132 133.0 ns/op
BenchmarkNameFromRight/ten_labels_i11_shot-16 3154410 378.2 ns/op
BenchmarkNameFromRight/not_subdomain_shot-16 35297224 33.59 ns/op
BenchmarkNameFromRightRandomized-16 10638702 113.4 ns/op 0 B/op 0 allocs/op
* Benchmark test result with this optimization:
BenchmarkNameFromRight/i0_origin-16 425864671 2.808 ns/op
BenchmarkNameFromRight/eq_origin_i1_shot-16 60903428 19.53 ns/op
BenchmarkNameFromRight/two_labels_i1-16 50209297 24.21 ns/op
BenchmarkNameFromRight/two_labels_i2-16 42483711 27.88 ns/op
BenchmarkNameFromRight/two_labels_i3_shot-16 40898925 29.24 ns/op
BenchmarkNameFromRight/ten_labels_i5-16 27916532 44.54 ns/op
BenchmarkNameFromRight/ten_labels_i11_shot-16 17540040 67.59 ns/op
BenchmarkNameFromRight/not_subdomain_shot-16 67180514 17.46 ns/op
BenchmarkNameFromRightRandomized-16 32692081 38.21 ns/op 0 B/op 0 allocs/op
Signed-off-by: yuwenchao <yuwenchao@bytedance.com>
---------
Signed-off-by: yuwenchao <ywc689@163.com>
Signed-off-by: yuwenchao <yuwenchao@bytedance.com>
Co-authored-by: yuwenchao <yuwenchao@bytedance.com>
* Stop importing testing in the main binary
Stop importing "testing" into the main binary:
* test/helpers.go imported it; remote that and change function signature
* update all tests that use this
Signed-off-by: Miek Gieben <miek@miek.nl>
* Drop import testing from metrics plugin
Signed-off-by: Miek Gieben <miek@miek.nl>
* more fiddling
Signed-off-by: Miek Gieben <miek@miek.nl>
* Rename middleware to plugin
first pass; mostly used 'sed', few spots where I manually changed
text.
This still builds a coredns binary.
* fmt error
* Rename AddMiddleware to AddPlugin
* Readd AddMiddleware to remain backwards compat