Slide 16
Slide 16 text
Performance benchmark
func fib(n int) int {
if n > 1 {
return fib(n - 1) + fib(n - 2)
}
return n
}
func main() {
n := 50
_ = fib(n)
}
MOVD $50, R0
MOVD R0, 8(RSP)
PCDATA $1, ZR
CALL "".fib(SB)
# if n > 1
MOVD "".n(FP), R0
CMP $1, R0
BLE fib_pc104
# fib(n - 1)
SUB $1, R0, R1
MOVD R1, 8(RSP)
PCDATA $1, ZR
CALL "".fib(SB)
MOVD 16(RSP), R0
MOVD R0, ""..autotmp_4-8(SP)
# fib(n - 2)
MOVD "".n(FP), R1
SUB $2, R1, R1
MOVD R1, 8(RSP)
CALL "".fib(SB)
MOVD 16(RSP), R0
MOVD ""..autotmp_4-8(SP), R1
# fib(n - 1) + fib(n - 2)
ADD R0, R1, R0
MOVD R0, "".~r1+8(FP)
MOVD -8(RSP), R29
MOVD.P 48(RSP), R30
RET (R30)
Go v1.17