网站性能优化加快访问速度的葵花宝典

性能在网站或软件上线时占有非常重要的角色,如何用更少的硬件资源支持更多的功能,完成更多的任务是软件工程师的责任,也是衡量软件工程师技术高低的标准。这是炒菜的道理,同样的食材,在酒店的师傅手里和普通人手里的做法有很大的不同,食堂的师傅是工程化的做法,在短时间内炒更多的菜,味道不能掉下来,普通人是自由的,没有章法,也许只是兴趣和放松的路线简而言之,厨师通过技术赚钱,其他人只玩。程序员的技术出现在哪里?性能调整是最重要的一环,也是最基本的一环,只有掌握了这个技能,才能进一步构筑和设计,否则相反的道路会变得困难。


这时,你可能会说我认为性能很重要,但是我怎么学习呢?IT是一个快速发展的行业,每年出现的新技术,新框架数不胜数,像星星一样多,经常不知道Java,Go很快就会被淘汰……一个接一个地,动不了手。如果你经常有这种感觉,那么这篇文章可能对你有帮助。性能优化的课程。首先,结论是如何优化性能,开发效率高的程序(当然,在硬件资源相同、使用率相同的条件下),只有两条路:1.掌握局部原理。2.掌握基本算法设计和分析。在现有的计算机框架下(冯诺依曼框架)是优秀的必要条件,换句话说,如果写了性能比别人好的程序,只有两种情况,或者局部原理更好,或者采用更好的算法,同时如果想写比别人好的程序,也只能走两条路,局部原理。软件工程领域的经验充分丰富的话,会有突然意识到的感觉。因为这个例子太多了。Linux中的硬盘缓冲、页面缓冲、Redis中的要素少的时候,用ziplist代替hashmap可能会带来性能的提高、内存的减少。Kafka依赖的磁盘缓冲、区分存储机制、Mysql的B+树索引,更下层的CPUCPUCacheline技术、分页技术等,实际上以局部原理为理论基础。什么是局部原理?


简而言之,它分为三个要点:程序总是按批处理数据,效率最高的例如CPU读取存储器按批处理,例如cacheline=64/128byte,存储器和硬盘按4KB读取。由于计算机结构的特点,各级设备(从CPU到内存到硬盘和外部设备)之间的访问速度存在数量水平的差异,因此注定不能一个一个地读取这种现象决定了计算机优化的方向,被称为冯诺曼瓶颈最近访问的资源(内存位置)最近可能会被访问。这叫做时间的局部性,对应的解决办法是缓存。



现在的位置存储器被访问,大概率旁边的存储器也被后续访问,这被称为空间的局部性,对应的解决方案是预加载,因此,导游的顺序是,由于现代计算机有冯诺依曼的瓶颈,需要缓存和预加载来提高程序的性能。否则,IO过重,资源不利用,效率低。还是以做饭为例。我们去买蔬菜的时候,尽量减少去蔬菜市场的时间,发现什么蔬菜没有了,暂时去蔬菜市场O太重,必须用局部原理解决。炒菜的例子是炒青椒炒肉这种菜,首先是买蔬菜,买青椒的时候可以一起买洋葱和大蒜。蔬菜区很多都是相邻的,买肉的时候,尽量一起买酱油醋,也很可能是相邻的空间加载是预加载,回家炒菜的时候,厨房的配置多是炒菜的锅和油盐酱醋分开放置开放置的,但是炒菜的时候加入盐,放入酱油,为了减少往返油盐的时间,在炒菜的时候放入油的地方,放入炒菜的地方,放入炒菜的时间,放入炒菜的时间,放入炒菜的时间,放入油的地方,放入炒菜的时间,放入炒菜的时间,放入炒菜的时间,放入炒菜的地方,放入炒菜的时间,放入炒菜的时间,放入炒菜的时间,放入炒菜的时间,放入炒菜的时间。


分享: