• Ingo Oeser's avatar
    regexp: avoid alloc in QuoteMeta when not quoting · 9aed16e9
    Ingo Oeser authored
    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/31395Reviewed-by: default avatarRuss Cox <rsc@golang.org>
    Reviewed-by: default avatarAustin Clements <austin@google.com>
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    9aed16e9
regexp.go 34 KB