压力测试步骤
准备测试代码
package main
import "fmt"
func main() {
fmt.Println(GetFibonacci(6))
sum := GetNum(10)
fmt.Println(sum)
getRecursion := GetRecursion(10)
fmt.Println(getRecursion)
fbNum := GetFbNum(10)
fmt.Println(fbNum)
}
/**
递归就是自己调自己
递归一定要有终止条件,否则就会无限循环
*/
func GetFibonacci(n int) int {
// 如果是第0项或者第2项直接返回1
if n == 0 || n == 1 {
return 1
} else {
return GetFibonacci(n-1) + GetFibonacci(n-2)
}
}
/**
使用非递归实现斐波那契数列
*/
func GetFbNum(n int) int {
a := 1
b := 1
c := a + b
for i := 1; i <= n; i++ {
a = b
b = c
c = a + b
}
return a
}
/**
使用循环来实现自然数之和
*/
func GetNum(n int) (sum int) {
for i := 1; i <= n; i++ {
sum += i
}
return
}
/**
使用递归来实现自然数求和
*/
func GetRecursion(n int) (sum int) {
if n == 1 {
return 1
} else {
return n + GetRecursion(n-1)
}
}
创建测试文件
package main
import "testing"
/**
测试递归求斐波那契数列
*/
func BenchmarkGetFibonacci(b *testing.B) {
b.ReportAllocs()
for i := 0; i < b.N; i++ {
GetFibonacci(10)
}
}
func BenchmarkGetFbNum(b *testing.B) {
b.ReportAllocs()
for i := 0; i < b.N; i++ {
GetFbNum(10)
}
}
目录存放
执行测试
测试结果显示
数据解释
BenchmarkGetFibonacci (测试的方法名)
3835340(执行的次数)
312 ns/op(每次执行时间)
后两列代表分配的内存大小和次数(48 B/op 1 allocs/op)