摘要: 相信绝大多数的人都了解内存对齐,都知道变量应该按8字节去对齐,这样性能高。但是其最最底层的原理是啥呢? 有的人可能会说,因为高速缓存是以8字节为单位进行的。读者你很聪明,这是原因之一。但我今天想挖的是更底层一点的原理,让我们去内存的物理构成里找找答案! 内存物理结构 前面我们说过内存是由chip构成 阅读全文
posted @ 2020-11-01 19:55 zhangyanfei01 阅读(324) 评论(0) 推荐(1) 编辑
摘要: 函数开销困惑 在现代的开发工作中,相信绝大部分的同学手头的项目都不是从第零行代码开始搭建的。各个语言都有自己流行的代码框架,如PHP的有Laravel、CodeIgniter、ThinkPHP等等。大家都是在自己的框架的基础上添加自己的业务代码逻辑,开启开发工作。还记得我们团队有位开发同学当时问过我 阅读全文
posted @ 2020-11-01 19:32 zhangyanfei01 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 我问大家一个问题,下图中一个最简单的例子,会导致哪些CPU开销产生?你是否能够说清楚? <?php ... $redis->get('test'); ... 这个例子一下子就把大家在我的文章里学到的东西和你的实际工作结合起来了。怎么样,是不是足够简单?就是一句php代码从redis实例中获取一个ke 阅读全文
posted @ 2020-11-01 19:23 zhangyanfei01 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 前面的几篇文章里讨论过了进程上下文切换和系统调用对系统性能的影响,我们今天再来看另外一个CPU吃货,那就是软中断。 你在用vmstat或者其他一些工具查看系统CPU消耗的时候,发现有两列是单独列出来的,分别是是hi和si。他们分别是硬中断和软中断。既然vmstat把中断的开销单独列出来了,就说明一个 阅读全文
posted @ 2020-11-01 13:22 zhangyanfei01 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 前面我们讨论系统调用的时候结论是耗时200ns-15us不等。不过我今天说的我的这个遭遇可能会让你进一步认识系统调用的真正开销。在本节里你会看到一个耗时2.5ms的connect系统调用,注意是毫秒,相当于2500us! 问题描述 当时是我的一个线上云控接口,是nginx+lua写的。正常情况下,单 阅读全文
posted @ 2020-11-01 13:10 zhangyanfei01 阅读(247) 评论(0) 推荐(0) 编辑