Cache elements of State

Cache the size and the do bit whenever someone asked for it. We can

probably add more:



PASS

BenchmarkStateDo-4  	100000000	        11.9 ns/op

BenchmarkStateSize-4	 5000000	       265 ns/op

ok  	github.com/miekg/coredns/middleware	2.828s



PASS

BenchmarkStateDo-4  	1000000000	         2.86 ns/op

BenchmarkStateSize-4	500000000	         3.10 ns/op

ok  	github.com/miekg/coredns/middleware	5.032s



This PR also includes some testing cleanups as well.
This commit is contained in:
Miek Gieben
2016-04-04 08:19:06 +01:00
parent b3b6fe48f6
commit 84dfdab584
19 changed files with 170 additions and 73 deletions

View File

@@ -9,6 +9,7 @@ import (
"testing"
"github.com/miekg/coredns/middleware"
coretest "github.com/miekg/coredns/middleware/testing"
"github.com/miekg/dns"
"golang.org/x/net/context"
@@ -46,7 +47,7 @@ func TestErrors(t *testing.T) {
for i, test := range tests {
em.Next = test.next
buf.Reset()
rec := middleware.NewResponseRecorder(&middleware.TestResponseWriter{})
rec := middleware.NewResponseRecorder(&coretest.ResponseWriter{})
code, err := em.ServeDNS(ctx, rec, req)
if err != test.expectedErr {
@@ -77,7 +78,7 @@ func TestVisibleErrorWithPanic(t *testing.T) {
req := new(dns.Msg)
req.SetQuestion("example.org.", dns.TypeA)
rec := middleware.NewResponseRecorder(&middleware.TestResponseWriter{})
rec := middleware.NewResponseRecorder(&coretest.ResponseWriter{})
code, err := eh.ServeDNS(ctx, rec, req)
if code != 0 {