diff options
| author | Brad Fitzpatrick <bradfitz@golang.org> | 2011-10-03 15:19:04 -0700 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2011-10-03 15:19:04 -0700 |
| commit | bba7396fbd4c3245dbedd3cc2a1fb25137331ebb (patch) | |
| tree | 042d2580b79df727ae9f01e6de5cda1e093f1b9e /src/pkg/http/server.go | |
| parent | e419535f2ae5c8aef1f64cdb207049c8712ffb48 (diff) | |
| download | go-bba7396fbd4c3245dbedd3cc2a1fb25137331ebb.tar.xz | |
strings: implement a faster byte->string Replacer
This implements a replacer for when all old strings are single
bytes, but new values are not.
BenchmarkHTMLEscapeNew 1000000 1090 ns/op
BenchmarkHTMLEscapeOld 1000000 2049 ns/op
R=rsc
CC=golang-dev
https://golang.org/cl/5176043
Diffstat (limited to 'src/pkg/http/server.go')
| -rw-r--r-- | src/pkg/http/server.go | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/pkg/http/server.go b/src/pkg/http/server.go index 8326ff8be1..e8e23087e0 100644 --- a/src/pkg/http/server.go +++ b/src/pkg/http/server.go @@ -752,13 +752,16 @@ func Redirect(w ResponseWriter, r *Request, urlStr string, code int) { } } +var htmlReplacer = strings.NewReplacer( + "&", "&", + "<", "<", + ">", ">", + `"`, """, + "'", "'", +) + func htmlEscape(s string) string { - s = strings.Replace(s, "&", "&", -1) - s = strings.Replace(s, "<", "<", -1) - s = strings.Replace(s, ">", ">", -1) - s = strings.Replace(s, "\"", """, -1) - s = strings.Replace(s, "'", "'", -1) - return s + return htmlReplacer.Replace(s) } // Redirect to a fixed URL |
