我试图弄清strings.Join方法与+常规连接]相比的使用。
为了进行比较,我在os.Args上同时使用这两种方法作为要连接的字符串列表。
我的串联功能代码是:
func regular_concatenation() { var s, sep string for i := 1; i < len(os.Args); i++ { s += sep + os.Args[i] sep = " " } fmt.Println(s) } func join_concatenation() { fmt.Println(strings.Join(os.Args, " ")) }
并且性能检查的主要功能是:
。这让我感到困惑,因为我的理解方式-使用常规+ =方法时,它每次都会创建一个新的字符串引用(因为字符串在golang中是不可变的),因此应该运行垃圾收集器以收集未使用的数据,这会浪费时间。func main() { var end_1, end_2 float64 var start_1, start_2 time.Time start_1 = time.Now() for i:=0; i < 100; i++ { ex1_3_join_concatenation() } end_1 = time.Since(start_1).Seconds() start_2 = time.Now() for i:=0; i < 100; i++ { ex1_3_regular_concatenation() } end_2 = time.Since(start_2).Seconds() fmt.Println(end_1) fmt.Println(end_2) }
问题是-当我运行代码时,用20个参数(os.Args)说,我得到的结果是[[strings.Join方法比常规合并慢
所以问题是-字符串。加入实际上是一种更快的方法吗?如果是的话-在此示例中我在做什么错?
我正在尝试使用string.Join方法,而不是使用+ =进行常规串联。为了进行比较,我在os.Args上同时使用了这两种方法作为要连接的字符串列表。我的...
可以