]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/cgo: simplify a call to strip spaces
authorAgniva De Sarker <agnivade@yahoo.co.in>
Wed, 27 Sep 2017 18:00:43 +0000 (23:30 +0530)
committerIan Lance Taylor <iant@golang.org>
Wed, 27 Sep 2017 19:52:55 +0000 (19:52 +0000)
Combined the Split and Join call with a Replace. This simplifies
the code as well as makes it fast.

Micro-benchmarks show good improvements -

func BenchmarkJoinSplit(b *testing.B) {
  for n := 0; n < b.N; n++ {
    strings.Join(strings.Split("this string has some spaces", " "), "")
  }
}

func BenchmarkReplace(b *testing.B) {
  for n := 0; n < b.N; n++ {
    strings.Replace("this string has some spaces", " ", "", -1)
  }
}

name         old time/op    new time/op    delta
JoinSplit-4     308ns ± 2%     192ns ± 4%  -37.60%  (p=0.008 n=5+5)

name         old alloc/op   new alloc/op   delta
JoinSplit-4      144B ± 0%       64B ± 0%  -55.56%  (p=0.008 n=5+5)

name         old allocs/op  new allocs/op  delta
JoinSplit-4      3.00 ± 0%      2.00 ± 0%  -33.33%  (p=0.008 n=5+5)

Change-Id: I1dc32105ae7a0be5a43ab0bedde992cefbed5d7d
Reviewed-on: https://go-review.googlesource.com/66590
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/cgo/gcc.go

index 867db4f11488908add22c3f250682d6a1b050a0f..dc80159ef3865f7b948c3d92b4aa58f62cdad2cb 100644 (file)
@@ -2141,7 +2141,7 @@ func (c *typeConv) Type(dtype dwarf.Type, pos token.Pos) *Type {
                        if ss, ok := dwarfToName[s]; ok {
                                s = ss
                        }
-                       s = strings.Join(strings.Split(s, " "), "") // strip spaces
+                       s = strings.Replace(s, " ", "", -1)
                        name := c.Ident("_Ctype_" + s)
                        tt := *t
                        typedef[name.Name] = &tt