版主
- 积分
- 58255
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2017-10-15
- 最后登录
- 1970-1-1
|
- go tool compile -S main.go
复制代码
可以把30行的golang代码反汇编成大概400多行机器语言。
其中最关键的几个loop之一代码是19行
- "".merge STEXT size=405 args=0x48 locals=0x30
- 0x0096 00150 (main.go:19) MOVQ (R9), R11
- 0x0099 00153 (main.go:19) MOVQ (DX), R12
- 0x009c 00156 (main.go:19) CMPQ R11, R12
- 0x009f 00159 (main.go:19) JGE 199
- 0x00a1 00161 (main.go:20) CMPQ R10, CX
- 0x00a4 00164 (main.go:20) JCC 388
- 0x00aa 00170 (main.go:20) MOVQ R11, (AX)(R10*8)
- 0x00ae 00174 (main.go:21) DECQ R8
- 0x00b1 00177 (main.go:21) MOVQ R8, R11
- 0x00b4 00180 (main.go:21) NEGQ R8
- 0x00b7 00183 (main.go:21) SARQ $63, R8
- 0x00bb 00187 (main.go:21) ANDQ $8, R8
- 0x00bf 00191 (main.go:21) PCDATA $2, $4
- 0x00bf 00191 (main.go:21) ADDQ R9, R8
- 0x00c2 00194 (main.go:21) DECQ DI
- 0x00c5 00197 (main.go:21) JMP 123
- 0x0184 00388 (main.go:20) CALL runtime.panicindex(SB)
- 0x0189 00393 (main.go:20) UNDEF
- 0x018b 00395 (main.go:20) NOP
复制代码
大概和1.73Sec的运行时间对上。当然这个对上可能是voodoo。
另外可以
- go test -bench=. -cpuprofile=/tmp/cprof
- go tool pprof -png /tmp/cprof
复制代码
来生成出一个break down。
|
|