你为什么不应该过度关注go语言的逃逸分析-牛翰网

你为什么不应该过度关注go语言的逃逸分析

逃逸分析算是go语言的特色之一,编译器自动分析变量/内存应该分配在栈上还是堆上,程序员不需要主动关心这些事情,保证了内存安全的同时也减轻了程序员的负担。 然而这个“减轻负担”的特性现在...
c++临时对象导致的生命周期问题-牛翰网

c++临时对象导致的生命周期问题

目录 基础回顾 函数调用中的生命周期问题 链式调用中的生命周期问题 三元运算符中的生命周期问题 特例 如何发现生命周期问题 总结 参考资料 对象的生命周期是c++中非常重要的概念,它直接决定了...
golang对遍历目录操作的优化-牛翰网

golang对遍历目录操作的优化

一转眼go1.23都快发布了,时间过得真快。 不过今天我们把时间倒流回三年半之前,来关注一个在go1.16引入的关于处理目录时的优化。 对于go1.16的新变化,大家印象最深的可能是io包的大规模重构,...
6个月前
04310
因为我的一次疏忽而带来的golang1.23新特性-牛翰网

因为我的一次疏忽而带来的golang1.23新特性

距离golang 1.23发布还有两个月不到,按照惯例很快要进入1.23的功能冻结期了。在冻结期间不会再添加新功能,已经添加的功能不出大的意外一般也不会被移除。这正好可以让我们提前尝鲜这些即将到...
6个月前
04614
golang gc的内部优化-牛翰网

golang gc的内部优化

今天讲一个常见的gc compiler(也就是官方版本的go编译器和runtime)在垃圾回收的扫描标记阶段做的优化。 我对这个优化的描述印象最深的是在bigcache的注释里,大致内容是如果map的键值都不包含...
6个月前
05615
errgroup的常见误用-牛翰网

errgroup的常见误用

errgroup想必稍有经验的golang程序员都应该听说过,实际项目中用过的也应该不在少数。它和sync.WaitGroup类似,都可以发起执行并等待一组协程直到所有协程运行结束。除此之外errgroup还可以在协...
6个月前
0476
golang chan传递数据的性能开销-牛翰网

golang chan传递数据的性能开销

这篇文章并不讨论chan因为加锁解锁以及为了维持内存模型定义的行为而付出的运行时开销。 这篇文章要探讨的是chan在接收和发送数据时因为“复制”而产生的开销。 在做性能测试前先复习点基础知识...
6个月前
04115