- 博客(7)
- 收藏
- 关注
原创 Go语言字符串各种拼接的性能对比
其中使用直接 + 是最慢的也是最耗费内存的,使用strings.Builder能大幅提升性能。综合来看直接使用strings.Join方法是非常不错的。
2023-08-15 20:18:14 130
原创 go,让我们写下getcallerpc的汇编吧
在runtime包的过程中看到 getcallerpc 的函数声明,但是没看到该函数的实现。执行会打印 f() 代码所在位置的下一行。
2023-07-30 02:37:55 123
原创 go汇编中mcall方法通过0(sp)为什么能获取调用者pc?
我们现在要研究的是 MOVQ 0(SP), BX // caller's PC ,他是怎么通过0(SP)获取到调用者pc?补充一点这里调用者pc也是g的pc,也是g被恢复时要继续执行的代码位置。先介绍下mcall方法,mcall是go调度相关的重要代码,他会保存当前g执行的信息,然后切换的g0,调用传入的fn方法。他也会把保存的当前g传给fn方法。我们目光转回sp寄存器,sp寄存器是执行函数栈栈顶的指针,在go中访问函数内的局部变量,调用其他函数时传递参数,都要使用sp寄存器。
2023-07-21 19:07:25 253
原创 获取Goland中可比较类型的hash值
在 runtime 包下有 typehash 方法(位于alg.go文件),这个方法等价于map中对于key取hash的操作。所以我们通过golink的方式获取该方法。
2023-07-06 19:03:24 143
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人