Fork me on GitHub
摘要: 最近网上冲浪的时候看到有人分享了自己最近一次性能优化的经验。a56爆大奖在线娱乐向来对性能是比较敏感的,a56爆大奖在线娱乐就点进去看了。 然而a56爆大奖在线娱乐越看越觉得蹊跷,但本着“性能问题和性能优化要靠性能测试做依据”,a56爆大奖在线娱乐不能凭空怀疑别人吧,a56爆大奖在线娱乐a56爆大奖在线娱乐做了完整的测试并写下了这篇文章。 可疑的优化方案 分享者遇到的问题很简单:他发现程序中超过一半的 阅读全文
posted @ 2024-05-27 11:06 apocelipes 阅读(1970) 评论(12) 推荐(9) 编辑
摘要: 距离golang 1.23发布还有两个月不到,按照惯例很快要进入1.23的功能冻结期了。在冻结期间不会再添加新功能,已经添加的功能不出大的意外一般也不会被移除。这正好可以让a56爆大奖在线娱乐们提前尝鲜这些即将到来的新特性。 今天要说的就是1.23中对//go:linkname指令的变更。这个新特性可以说和a56爆大奖在线娱乐的一次失 阅读全文
posted @ 2024-05-16 10:55 apocelipes 阅读(2212) 评论(2) 推荐(6) 编辑
摘要: 在Linux中可以不需要有脚本或者二进制程序的文件在文件系统上实际存在,只需要有对应的数据在内存中,就有办法执行这些脚本和程序。 原理其实很简单,Linux里有办法把某块内存映射成文件描述符,对于每一个文件描述符,Linux会在/proc/self/fd/<文件描述符>这个路径上创建一个对应描述符的 阅读全文
posted @ 2024-05-14 10:00 apocelipes 阅读(381) 评论(0) 推荐(1) 编辑
摘要: 先说结论,lambda是不能重载的(至少到c++23依旧如此,以后会怎么样没人知道)。而且即使代码完全一样的两个lambda也会有完全不同的类型。 但虽然不能直接实现lambda重载,a56爆大奖在线娱乐们有办法去模拟。 在介绍怎么模拟之前,a56爆大奖在线娱乐们先看看c++里的functor是怎么重载的。 首先类的函数调用运算符是可 阅读全文
posted @ 2024-05-05 11:00 apocelipes 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 最近在翻《c++函数式编程》的时候看到有一小节在说c++14新增了“菱形运算符”。a56爆大奖在线娱乐寻思c++里好像没什么运算符叫这名字啊,而且c++14新增的功能很少,a56爆大奖在线娱乐也不记得有添加这种语法特性。一瞬间a56爆大奖在线娱乐有些怀疑a56爆大奖在线娱乐的记忆了,a56爆大奖在线娱乐为了查漏补缺,a56爆大奖在线娱乐写了这篇文章。 什么是菱形运算符 这个概念在Java里比较多见: L 阅读全文
posted @ 2024-04-29 16:25 apocelipes 阅读(1371) 评论(0) 推荐(5) 编辑
摘要: 今天讲一个常见的gc compiler(也就是官方版本的go编译器和runtime)在垃圾回收的扫描标记阶段做的优化。 a56爆大奖在线娱乐对这个优化的描述印象最深的是在bigcache的注释里,大致内容是如果map的键值都不包含指针,那么gc扫描的时候不管这个map多大都不会深入扫描map内部存储的数据,只检查ma 阅读全文
posted @ 2024-03-25 14:46 apocelipes 阅读(1267) 评论(0) 推荐(3) 编辑
摘要: errgroup想必稍有经验的golang程序员都应该听说过,实际项目中用过的也应该不在少数。它和sync.WaitGroup类似,都可以发起执行并等待一组协程直到所有协程运行结束。除此之外errgroup还可以在协程出错时取消当前的context,以及它还能控制可运行的协程的数量。 但在日常的代码 阅读全文
posted @ 2024-01-29 11:00 apocelipes 阅读(572) 评论(0) 推荐(1) 编辑
摘要: 这篇文章并不讨论chan因为加锁解锁以及为了维持内存模型定义的行为而付出的运行时开销。 这篇文章要探讨的是chan在接收和发送数据时因为“复制”而产生的开销。 在做性能测试前先复习点基础知识。 a56爆大奖在线娱乐索引 数据是如何在chan里流动的 情况1:发送的数据有读者在读取 情况2:发送的数据没有读者在读取 阅读全文
posted @ 2024-01-17 10:31 apocelipes 阅读(498) 评论(0) 推荐(2) 编辑
摘要: PEP703是未来去除GIL的计划,当然现在提案还在继续修改,但大致方向确定了。 对于实现细节a56爆大奖在线娱乐没啥兴趣多说,挑几个a56爆大奖在线娱乐比较在意的点讲讲。 ## 尽量少依赖原子操作的引用计数 没了GIL之后会出现两个以上的线程同时操作同一个Python对象的情况,首先要解决的是引用计数的计算不能出岔子,否则整个内存管 阅读全文
posted @ 2023-09-05 15:21 apocelipes 阅读(570) 评论(0) 推荐(1) 编辑
摘要: 经过了半年左右的开发,golang 1.21 在今天早上正式发布了。 这个版本中有不少重要的新特性和变更,尤其是在泛型相关的代码上。 因为有不少大变动,a56爆大奖在线娱乐建议等第一个patch版本也就是1.21.1出来之后再进行升级,以免遇到一些意外的bug带来麻烦。 好了,一起来看看1.21带来的新特性吧。 本 阅读全文
posted @ 2023-08-09 17:31 apocelipes 阅读(4284) 评论(0) 推荐(2) 编辑