検証コード
package main
import (
"fmt"
"time"
)
func main() {
// 容量未定義
s1 := make([]int, 1)
// 容量定義
s2 := make([]int, 1, 100000000)
var (
start time.Time
end time.Time
)
// 容量未定義の速度
start = time.Now()
for i := 1; i < cap(s2); i++ {
s1 = append(s1, i)
}
end = time.Now()
fmt.Printf("容量未定義:%fsec\r\n", end.Sub(start).Seconds())
// 容量定義済みの速度
start = time.Now()
for j := 1; j < cap(s2); j++ {
s2 = append(s2, j)
}
end = time.Now()
fmt.Printf("容量定義済:%fsec\r\n", end.Sub(start).Seconds())
}
結果(念のため3回)
容量未定義:1.138697sec
容量定義済:0.381012sec
容量未定義:1.216133sec
容量定義済:0.535423sec
容量未定義:1.184637sec
容量定義済:0.352957sec