1
0
mirror of https://github.com/golang/go synced 2024-11-20 06:54:42 -07:00
go/src/regexp
Ingo Oeser 9aed16e96d regexp: avoid alloc in QuoteMeta when not quoting
Many users quote literals in regular expressions just in case.
No need to allocate then.

Note: Also added benchmarks for quoting and not quoting.

	name             old time/op    new time/op     delta
	QuoteMetaAll-4      629ns ± 6%      654ns ± 5%    +4.01%        (p=0.001 n=20+19)
	QuoteMetaNone-4    1.02µs ± 6%     0.20µs ± 0%   -80.73%        (p=0.000 n=18+20)

	name             old speed      new speed       delta
	QuoteMetaAll-4   22.3MB/s ± 6%   21.4MB/s ± 5%    -3.94%        (p=0.001 n=20+19)
	QuoteMetaNone-4  25.3MB/s ± 3%  131.5MB/s ± 0%  +419.28%        (p=0.000 n=17+19)

	name             old alloc/op   new alloc/op    delta
	QuoteMetaAll-4      64.0B ± 0%      64.0B ± 0%      ~     (all samples are equal)
	QuoteMetaNone-4     96.0B ± 0%      0.0B ±NaN%  -100.00%        (p=0.000 n=20+20)

	name             old allocs/op  new allocs/op   delta
	QuoteMetaAll-4       2.00 ± 0%       2.00 ± 0%      ~     (all samples are equal)
	QuoteMetaNone-4      2.00 ± 0%      0.00 ±NaN%  -100.00%        (p=0.000 n=20+20)

Change-Id: I38d50f463cde463115d22534f8eb849e54d899af
Reviewed-on: https://go-review.googlesource.com/31395
Reviewed-by: Russ Cox <rsc@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-10-19 07:09:08 +00:00
..
syntax unicode: upgrade to version 9.0.0 2016-06-28 15:08:11 +00:00
testdata regexp/syntax: fix factoring of common prefixes in alternations 2016-01-08 16:41:46 +00:00
all_test.go regexp: avoid alloc in QuoteMeta when not quoting 2016-10-19 07:09:08 +00:00
backtrack.go all: delete dead non-test code 2016-03-25 06:28:13 +00:00
example_test.go
exec2_test.go
exec_test.go regexp: don't run slow benchmarks on race builders 2016-09-14 18:17:06 +00:00
exec.go regexp: reduce mallocs in Regexp.Find* and Regexp.ReplaceAll*. 2016-09-06 17:04:31 +00:00
find_test.go
onepass_test.go all: delete dead test code 2016-03-21 07:10:08 +00:00
onepass.go regexp: remove dead code 2016-10-04 14:49:35 +00:00
regexp.go regexp: avoid alloc in QuoteMeta when not quoting 2016-10-19 07:09:08 +00:00