使用 Golang 实现,测量程序在不同情形下的运行时间差异。(Go 语言圣经书后习题 1.3)
做实验测量潜在低效的版本和使用了 strings.Join 的版本的运行时间差异。(1.6 节讲解了部分 time 包,11.4 节展示了如何写标准测试程序,以得到系统性的性能评测。)
我们可以使用 Golang 内置的测试工具进行测试。
package main
import (
"strings"
"testing"
)
func BenchmarkString2Join(b *testing.B) {
for i := 0; i < b.N; i++ {
input := []string{"Welcome", "To", "China"}
result := strings.Join(input, " ")
if result != "Welcome To China" {
b.Error("Unexcepted result:" + result)
}
}
}
func BenchmarkString2Plus(b *testing.B) {
for i := 0; i < b.N; i++ {
input := []string{"Welcome", "To", "China"}
var s, sep string
for j := 0; j < len(input); j++ {
s += sep + input[i]
sep = " "
}
if s != "Welcome To China" {
b.Error("Unexcepted result:" + s)
}
}
}
我们可以使用 Golang 内置的测试工具,运行上述两个 函数,比较它们运行的时间差异。