Experiences with go profiling mechanism
This commit is contained in:
commit
96b52a1583
5 changed files with 72 additions and 0 deletions
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
*.prof
|
||||
*.gif
|
||||
*.pdf
|
||||
*.balhau
|
18
README.md
Normal file
18
README.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Profiling
|
||||
|
||||
```
|
||||
# Compile it
|
||||
go build
|
||||
|
||||
# Test it
|
||||
go test
|
||||
|
||||
# Profile CPU
|
||||
go test -cpuprofile cpu.prof -bench .
|
||||
|
||||
# Visualize profiled data
|
||||
go tool pprof cpu.prof
|
||||
|
||||
```
|
||||
|
||||
|
3
go.mod
Normal file
3
go.mod
Normal file
|
@ -0,0 +1,3 @@
|
|||
module goprofile.balhau
|
||||
|
||||
go 1.18
|
28
main.go
Normal file
28
main.go
Normal file
|
@ -0,0 +1,28 @@
|
|||
package main
|
||||
|
||||
func Fib2(n int) uint64 {
|
||||
if n == 0 {
|
||||
return 0
|
||||
} else if n == 1 {
|
||||
return 1
|
||||
} else {
|
||||
return Fib2(n-1) + Fib2(n-2)
|
||||
}
|
||||
}
|
||||
|
||||
func Fib(n int) *uint64 {
|
||||
//var f [100010]uint64
|
||||
//f := make([]uint64, 10000)
|
||||
var f [10000]uint64
|
||||
f[0] = 0
|
||||
f[1] = 1
|
||||
|
||||
for i := 2; i <= n; i++ {
|
||||
f[i] = f[i-1] + f[i-2]
|
||||
}
|
||||
return &f[n]
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
}
|
19
main_test.go
Normal file
19
main_test.go
Normal file
|
@ -0,0 +1,19 @@
|
|||
package main
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestGetVal(t *testing.T) {
|
||||
for i := 0; i < 1000; i++ {
|
||||
if Fib2(30) != 832040 {
|
||||
t.Error("Incorrect!")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetValOpt(t *testing.T) {
|
||||
for i := 0; i < 1000; i++ {
|
||||
if Fib(30) != 832040 {
|
||||
t.Error("Incorrect!")
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue