Use larger buffer to speed things up

This commit is contained in:
Miek Gieben 2012-01-05 10:42:15 +01:00
parent 041b8e196e
commit f999d52e7e
2 changed files with 44 additions and 17 deletions

View File

@ -26336,6 +26336,4 @@ miek.nl. 345600 IN NS ext.ns.whyscream.net.
miek.nl. 345600 IN NS open.nlnetlabs.nl.
miek.nl. 345600 IN NS omval.tednet.nl.
miek.nl. 345600 IN NS elektron.atoom.net.
2miek.nl. 345600 IN RRSIG SOA 8 2 345600 20110823011301 20110724011301 12051 miek.nl. r7f+/sWHR8g8y50XHDzOaOjXlpixIzUzBDbOVkCKhnOKhgSHeudWxCF7ZsfxfWNTe2kRgPJeVSgAWOc9KnPAORbBEpRAO6LtzQrqi99yuVTTNCL0+7+LwTLlG6kYkAGctJzlWEvEjCyN+r8Kq9sKa9VZSegQHxHsdCfCMsjR/3U= ;{id = 12051}
;; Added 6275 DS records (percentage was 25) to 10000 NS RRset's (from input-zone: 0, from added: 10000)
;; lines in original input-zone: 64
2miek.nl. 345600 IN RRSIG SOA 8 2 345600 20110823011301 20110724011301 12051 miek.nl. r7f+/sWHR8g8y50XHDzOaOjXlpixIzUzBDbOVkCKhnOKhgSHeudWxCF7ZsfxfWNTe2kRgPJeVSgAWOc9KnPAORbBEpRAO6LtzQrqi99yuVTTNCL0+7+LwTLlG6kYkAGctJzlWEvEjCyN+r8Kq9sKa9VZSegQHxHsdCfCMsjR/3U=

View File

@ -296,14 +296,24 @@ func zlexer(r io.Reader, c chan lex) {
rrtype := false
owner := true
brace := 0
stop := false
p, q := 0, 0
buf := make([]byte, MaxMsgSize)
n, err := r.Read(buf)
for err != io.EOF {
l.column = 0
l.line = 0
if err == io.EOF {
stop = true
}
l.column = 0
l.line = 1 // Yeah, start at one
for {
l.column++
switch buf[q] {
case ' ', '\t':
// Awkward
if buf[q] == '\t' { // Tabs are eight
// Go to the first tabstop
l.column = (1 + (l.column / 8)) * 8
}
escape = false
if commt {
p++
@ -365,6 +375,8 @@ func zlexer(r io.Reader, c chan lex) {
commt = true
case '\n':
// Hmmm, escape newline
l.line++
l.column = 0
escape = false
if commt {
// Reset a comment
@ -472,26 +484,43 @@ func zlexer(r io.Reader, c chan lex) {
}
// tok, err = r.ReadByte() read extra bytes
q++
if q > n-1 { // Funny, 'cause q starts at zero
if q > n-1 { // Funny, 'cause q starts at zero
if stop {
break
}
// println("N", n)
// Read in a new chunk. Every thing before p
// can be discarded.
n1 := copy(buf, buf[p:])
// println("PQ", p, q, string(buf[p:q]))
n1 := copy(buf, buf[p:])
// println("copied n1", n1)
// Reset the indices
q = q - p
p = 0
// Read a new chunk
n, err = r.Read(buf[n1:])
n2, err := r.Read(buf[n1:])
if err != nil {
// println("OOK NOG een error")
// println("err", err.Error())
if err == io.EOF {
stop = true
}
}
n = n1 + n2/// JAJAJA
// println("****Wat heb ik", string(buf[:q]), "Q", "n:", n)
// println("****Wat heb ik", string(buf[:q+10]), "Q")
// println("wat is n nu", n)
}
}
// It this need anymore???
/*
if p != q {
// Send remainder
l.token = string(buf[p:q])
l.value = _STRING
c <- l
}
*/
// println("pq", p, q)
if p != q {
// println("OVER", string(buf[p:q]))
l.token = string(buf[p:q])
l.value = _STRING
c <- l
}
}
func stringToTtl(l lex, t chan Token) (uint32, bool) {