06 2025 档案

【踩了一个坑】golang 中使用 unsafe,在 ARM64 下出现错误 `signal SIGBUS`
摘要:作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 为了去掉数组的下标越界检查,于是把数组访问改成 unsafe 的指针访问。 运行时出现无法调试无法捕获的错误: unexpected fault addres 阅读全文

posted @ 2025-06-13 10:35 ahfuzhang 阅读(32) 评论(0) 推荐(0)

golang中发现的一个教训:如果是读算法,就不要做成写算法
摘要:作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 我仍然在尝试优化 VictoriaLogs 的性能,手贱开始改以下这个函数: // lib/logstorage/bloomfilter.go func in 阅读全文

posted @ 2025-06-13 10:20 ahfuzhang 阅读(79) 评论(0) 推荐(0)

golang中写个字符串遍历谁不会?且看我如何提升 50 倍
摘要:作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 引子 VictoriaMetrics (Github: https://github.com/VictoriaMetrics/VictoriaMetrics) 阅读全文

posted @ 2025-06-10 15:04 ahfuzhang 阅读(1110) 评论(7) 推荐(12)

【golang代码反编译研究】switch 中的常量有助于生成跳转表代码
摘要:作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 先说结论:一些比较小的循环,可以用 switch + 常量来展开,可以提升性能。因为编译器会为 switch 建立代码段的跳转表,从而不需要很多比较指令。 例 阅读全文

posted @ 2025-06-06 18:35 ahfuzhang 阅读(39) 评论(0) 推荐(0)

【踩了一个坑】plan9汇编中,VPTEST 指令无法判断两个 256bit 寄存器全等
摘要:作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 我想要做两个 int64 数组的比较: align_4: VPBROADCASTQ R12, Y1 VMOVDQU (R8), Y0 VPTEST Y0, Y 阅读全文

posted @ 2025-06-04 11:42 ahfuzhang 阅读(14) 评论(0) 推荐(0)

【golang 技巧】通过提前下标访问,让编译器不要生成数据越界检查的代码(来自VictoriaLogs的未验证技巧)
摘要:作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 阅读 VictoriaLogs 源码时,发现这样一段代码: // lib/logstorage/log_rows.go func (lr *logRows) 阅读全文

posted @ 2025-06-02 15:01 ahfuzhang 阅读(14) 评论(0) 推荐(0)