性能优化总结

43 篇文章 1 订阅
订阅专栏

 性能优化关注点

 从图中可以看出,性能优化的主要关注:CPU、内存、磁盘IO、网络IO等四个方面。

性能指标

每个关注点都有对应的指标,吞吐率、响应时间、QPS/IOPS、TP99、资源使用率是我们经常关注的指标,通过这些指标来衡量性能

其中时间的量级

 性能优化的方向

监控、分析、优化,三部曲,以终为始,循环往复

 

 常用工具:

 

优化大师格雷格画的图,吊炸天,你应该很熟悉,gregg亲手实现了一些工具。

 1. 借助工具定位性能瓶颈。gprof2dot.py可以处理多种采样输出数据。建议使用perf等非侵入式的profiling工具。

 linux下的内核测试工具——perf使用简介_谁不小心的的博客-CSDN博客_perf源码下载

 

 定位IO瓶颈问题

 定位锁的问题

 

 

 

 

 

 

依据数据而不是凭空猜测

这是性能优化的第一原则,当我们怀疑性能有问题的时候,应该通过测试、日志、profillig来分析出哪里有问题,有的放矢,而不是凭感觉、撞运气。一个系统有了性能问题,瓶颈有可能是CPU,有可能是内存,有可能是IO(磁盘IO,网络IO),大方向的定位可以使用top以及stat系列来定位(vmstat,iostat,netstat...),针对单个进程,可以使用pidstat来分析。

在本文中,主要讨论的是CPU相关的性能问题。按照80/20定律,绝大多数的时间都耗费在少量的代码片段里面,找出这些代码唯一可靠的办法就是profile,我所知的编程语言,都有相关的profile工具,熟练使用这些profile工具是性能优化的第一步。

忌过早优化

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all evil (or at least most of it) in programming.

我并不十分清楚Donald Knuth说出这句名言的上下文环境,但我自己是十分认同这个观念的。在我的工作环境(以及典型的互联网应用开发)与编程模式下,追求的是快速的迭代与试错,过早的优化往往是无用功。而且,过早的优化很容易拍脑袋,优化的点往往不是真正的性能瓶颈。

忌过度优化

As performance is part of the specification of a program – a program that is unusably slow is not fit for purpose

性能优化的目标是追求合适的性价比。

在不同的阶段,我们对系统的性能会有一定的要求,比如吞吐量要达到多少多少。如果达不到这个指标,就需要去优化。如果能满足预期,那么就无需花费时间精力去优化,比如只有几十个人使用的内部系统,就不用按照十万在线的目标去优化。

而且,后面也会提到,一些优化方法是“有损”的,可能会对代码的可读性、可维护性有副作用。这个时候,就更不能过度优化。

深入理解业务

代码是服务于业务的,也许是服务于最终用户,也许是服务于其他程序员。不了解业务,很难理解系统的流程,很难找出系统设计的不足之处。后面还会提及对业务理解的重要性。

性能优化是持久战

当核心业务方向明确之后,就应该开始关注性能问题,当项目上线之后,更应该持续的进行性能检测与优化。

现在的互联网产品,不再是一锤子买卖,在上线之后还需要持续的开发,用户的涌入也会带来性能问题。因此需要自动化的检测性能问题,保持稳定的测试环境,持续的发现并解决性能问题,而不是被动地等到用户的投诉。

选择合适的衡量指标、测试用例、测试环境

正因为性能优化是一个长期的行为,所以需要固定衡量指标、测试用例、测试环境,这样才能客观反映性能的实际情况,也能展现出优化的效果。

衡量性能有很多指标,比如系统响应时间、系统吞吐量、系统并发量。不同的系统核心指标是不一样的,首先要明确本系统的核心性能诉求,固定测试用例;其次也要兼顾其他指标,不能顾此失彼。

测试环境也很重要,有一次突然发现我们的QPS高了许多,但是程序压根儿没优化,查了半天,才发现是换了一个更牛逼的物理机做测试服务器。

常见性能问题的优化策略
weixin_34007020的博客
03-21 549
常见性能优化策略分类 代码 之所以把代码放到第一位,是因为这一点最容易引起技术人员的忽视。很多技术人员拿到一个性能优化的需求以后,言必称缓存、异步、JVM等。实际上,第一步就应该是分析相关的代码,找出相应的瓶颈,再来考虑具体的优化策略。有一些性能问题,完全是由于代码写的不合理,通过直接修改一下代码就能解决问题的,比如for循环次数过多、作了很多无谓的条件判断、相同逻辑重复多次等。 数据库 ...
微信读书 iOS 性能优化总结 | WeRead团队博客1
08-04
《微信读书iOS性能优化总结》 微信读书作为一款专注于阅读体验的应用,对于性能优化的重要性不言而喻。本文主要从发现问题、解决问题和预防问题三个方面,总结了微信读书在iOS平台上的性能优化策略。 首先,发现...
mysql5.6性能优化总结
08-15
MySQL 5.6 性能优化总结 MySQL 5.6 是一个高性能的关系型数据库管理系统,然而随着数据库规模的增长和复杂度的增加,性能问题开始浮现。因此,性能优化成为 MySQL 数据库管理员和开发者的首要任务。本文将总结 ...
mysql深度学习者 MySQL性能优化总结
12-17
MySQL 性能优化总结 MySQL 性能优化数据库管理和开发人员需要掌握的重要技能。性能优化的目标是让查询更快,减少查询所消耗的时间。为了达到这个目标,我们需要从每一个环节入手,包括连接、配置优化、索引优化、...
35个Java代码性能优化总结
12-22
 代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是...
java 性能优化的方向
01-08
1.CPU的计算能力 2.磁盘的读写能力 3.内存的读写能力 4.网络的读写能力
知识总结--性能优化总结(摘录+转载)
没有简介
03-09 940
讲到性能调优就需要了解我们调优的是什么。计算机由硬件、操作系统和应用程序组成,在性能调优时无外乎对这几块进行调优。硬件:无外乎内存、磁盘、cpu、网卡等,操作系统:无外乎进程、虚拟内存、文件系统、网络等。应用程序就是作为开发需要着重注意的地方,比如:mysql、nginx、redis、包括本身应用程序的jvm、代码、sql脚本等等。性能调优就是对硬件、操作系统和应用程序有相当深刻的理解,调节三者之...
php网站性能优化方向
weixin_30838873的博客
11-07 175
一、规范说明 性能是网站运行是否良好的关键因素,网站的性能与效率影响着公司的运营成本及长远发展,编写出高质高效的代码是我们每个开发人员必备的素质,也是我们良好的职业素养。 二、影响性能的因素 A、商业需求 需求合理性 需求与系统的整合 需求所带来的商业利益是否与需求开发的成本成正比 需求所带来的风险 B、Web 服务器 并发处理能力 高负载的能力 负载均衡的能力 ...
性能优化的点
感恩、奋进、自信
04-04 674
性能优化的目的:无非是减少用户流量消耗,提升用户首屏体验,提升用户访问速度,让用户专注内容本身。优化的点可以从下面几点来讲,主要是对后台的优化比较多:1、减少网络请求数量:减少请求的文件数基本原理:在浏览器与服务器进行通信时,主要是通过 HTTP 进行通信。浏览器与服务器需要经过三次握手,每次握手需要花费大量时间。而且不同浏览器对资源文件并发请求数量有限(不同浏览器允许并发数),一旦 HTTP 请...
全网最全性能优化总结!!(冰河吐血整理,建议收藏)
热门推荐
冰河的专栏
06-24 1万+
性能优化一般包含:数据聚合优化、资源冲突优化、算法优化、JVM优化、复用优化、计算优化和快速优化,冰河吐血整理,建议大家收藏!!
性能优化技术的三个方向
caofengtao1314的专栏
02-23 251
要么减少了磁盘的工作量(比如 PageCache 缓存),要么减少了 CPU 的工作量(比如直接 IO),要么提高了内存的利用率(比如零拷贝
实用:性能优化的几点总结
penn
06-17 218
一、最基本查看sql,是否建索引,索引是否生效,走了多少条数据,一般如果走了索引,并且索引生效,基本row数据会很少,相反,成百上千上万都有可能。 二、查询的数据量,ru'g
9大性能优化经验总结,强烈建议收藏!
最新发布
我要修改昵称
09-12 330
9大性能优化经验总结,强烈建议收藏!
Java性能优化的七个方向
农民工老王的博客
03-08 7946
本文对Java性能优化的7种技术手段进行了简单的介绍。
MySQL性能优化总结:索引优化、查询优化、表优化等方法详解
MySQL性能优化总结 MySQL是一种常用的关系型数据库管理系统,它的性能优化对于提升系统的整体性能至关重要。在本篇总结中,我们将介绍一些MySQL优化的内容,包括索引的优化、查询的优化以及表的优化等。 1. 索引的...
写文章

热门文章

  • OpenWrt 设置IP地址 118005
  • 序号的结构层次顺序 82960
  • 自相关函数与互相关函数 50920
  • SecureCRT 上传文件 47705
  • Modbus测试工具ModbusPoll与Modbus Slave使用方法 34940

分类专栏

  • 前端 8篇
  • 工具 1篇
  • 工作总结 4篇
  • QT 1篇
  • 面试常见问题 5篇
  • 后端 2篇
  • 安卓 1篇
  • 网络基础 1篇
  • 数据结构与算法 5篇
  • Libevent 4篇
  • 机器学习 15篇
  • 深度学习 24篇
  • Linux 32篇
  • 32 39篇
  • Zigbee 5篇
  • 51 11篇
  • 树莓派 1篇
  • 数据库 5篇
  • mysql 2篇
  • altium designer 7篇
  • 其他 15篇
  • C/C++ 43篇
  • WPF 8篇
  • Python 22篇
  • 音频 23篇
  • 测试 2篇

最新评论

  • 前端遇到问题总结

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)使用更多的站内链接;(2)提升标题与正文的相关性;(3)增加除了各种控件外,文章正文的字数。

  • Easy-Mock服务器部署

    小陈classmate: 大佬,能加微信指点一下吗

  • 51单片机中的堆栈

    FengJieHeng: 通俗易懂!!!

  • ‘error:03000086:digital envelope routines::initialization“处理方法

    又是一个小学生: 谢谢您的回复,祝您一切顺利,工作顺心,身体健康,家庭幸福,生活愉快!如果您需要任何帮助,请随时联系我。

  • ‘error:03000086:digital envelope routines::initialization“处理方法

    又举杯: Computed properties in Vue.js are a feature that allows developers to calculate values based on reactive data within a component. These properties are automatically updated and cached whenever their dependencies change, ensuring that the data is always accurate. They are particularly useful for complex calculations, as they allow developers to simplify the code and abstract away the complexity. There are several benefits of using computed properties in Vue.js: 1. Improved performance: When using computed properties, Vue.js only updates the data when necessary. This can help improve performance and make your application run more smoothly. 2. Two-way data binding: Computed properties can be used for two-way data binding, allowing changes in the UI to update the underlying data, and vice versa. This can help improve user experience and make your application more responsive. 3. Simplified code: Computed properties allow developers to simplify complex calculations and abstract away the complexity, making the code more readable and easier to maintain. Overall, computed properties are a powerful feature in Vue.js that can help developers create more robust and efficient applications. By leveraging computed properties, you can improve performance, simplify your code, and provide a better user experience.

大家在看

  • 基于nodejs+vue乡镇卫生院信息管理[开题+源码+程序+论文]计算机毕业设计
  • 基于python的opencv图像处理基本操作
  • 基于SpringBoot和Vue框架的医保管理系统的设计与实现
  • 【IDEA】使用IDEA连接MySQL数据库并自动生成MySQL的建表SQL语句
  • 英伟达:排序模型增强LLM的RAG检索 343

最新文章

  • Qt常见布局
  • Pyhton 常见函数
  • ‘error:03000086:digital envelope routines::initialization“处理方法
2024年2篇
2023年4篇
2022年13篇
2021年6篇
2020年14篇
2019年69篇
2018年134篇
2016年5篇
2015年20篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王鹤壁百度网站优化哪家价格便宜业网站优化排名网站标题对优化的影响沈阳企业网站优化外包合同鲁权屯企业网站优化seo优化在哪个网站网站优化用什么技术优化网站代码广安市网站优化华强北网站优化多少钱福建网站优化费用网站优化后没效果余姚网站优化常州很好的网站优化用户体验武宁网站seo优化中堂五金网站制作优化排名上首页网站优化石家庄百度快照网站优化哪家好浦东新区公司网站优化营口网站优化联系方式夏邑专业网站优化怎么收费广宁优化网站茂名网站优化策略长春服务好的网站优化福州比较好的珠宝行业网站优化百度seo优化是什么网站推广如何做外贸网站优化如何优化网站推荐f火10星做网站优化的策划焦作知名网站优化推荐香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化