当前位置: 首页 > article >正文

常见性能优化策略

对于经常接触高并发服务的同学来学,会经常涉及到性能优化,但是由于平时很少总结,内容会比较分散,这里简单做一些总结

1:空间换时间

比如一些数据的访问需要很快返回结果,原本在磁盘上的数据,需要放到内存里面。

再比如为了能快速超找定位一些数据,我么会设计一些hash类的数据结构,提高查找效率

另外和这个相反的就是时间换空间,当然这种一般就不是高性能服务的常用方法,比较典型的就是使用压缩算法了。

2:并行/异步处理

并行一般是多线程/多进程/多协程来协作处理,提高并发度,提高qps,或者减少请求 处理时间。

异步通常比同步/阻塞的方式要快,也不会比协程慢,但是会增加一些代码的理解难度

3:预先/延后处理

比如提前读取数据,使用的时候能快速返回,不用再去读取,属于预先处理

延后处理,比如copy on write,典型的是c++ string的实现,属于写时拷贝。

4:缓存/批量合并

常见的cpu缓存,cdn缓存,程序中的LRU缓存,都属于一种缓存技术吧

批量合并,典型的是查询数据,一次可以执行多条命名,如redis的mget,pipeline等

5:算法和数据结构

算法这个就比较好理解了,n次方的算法事件复杂度和O(n)的算法复杂度,执行时间差异还是非常明显的

数据结构,比如什么场景适合用vector/list,什么场景适合用map/hash_map这也非常重要,需要熟悉每种数据结构的原理,知道起操作的时间复杂度,来选择合适的数据结构


http://www.kler.cn/news/234659.html

相关文章:

  • CVE-2012-2311 漏洞复现
  • 计算机网络(第六版)复习提纲29
  • spring boot 通过 application 切换cache使用的服务
  • React18原理: 再聊Fiber架构下的时间分片
  • 前端JavaScript篇之ajax、axios、fetch的区别
  • 【LeetCode每日一题】二维前缀和基本概念与案例
  • 剪辑思维大学习(Day5) - 剪辑时如何找到合适的音乐?!
  • #Z2322. 买保险
  • 【自然语言处理-工具篇】spaCy<2>--模型的使用
  • 请解释Java中的代理模式,分别介绍静态代理和动态代理
  • WindowsLinuxmeterepreter渗透命令回顾
  • windows 下安装gin
  • PKI - 借助Nginx实现_客户端使用CA根证书签发客户端证书
  • django中实现适配器模式
  • python基于flask的网上订餐系统769b9-django+vue
  • SNMP(简单网络管理协议)介绍
  • 【每日一题】04最小路径和 (DP3)
  • 【C语言】(20)动态内存分配
  • HiveQL——不借助任何外表,产生连续数值
  • Linux CentOS stream 9 alias
  • 【JavaScript 漫游】【014】正则表达式通关
  • VitePress-14- 配置-titleTemplate 的作用详解
  • 2.11学习总结
  • Redisson分布式锁 原理 + 运用 记录
  • CentOS基于volatility2的内存取证实验
  • bcdedit /store 填什么,Windows11的BCD文件在哪里?
  • CrossOver虚拟机软件功能相似的软件
  • 6.JavaScript中赋值运算符,自增运算符,比较运算符,逻辑运算符
  • 深入理解 Nginx 插件及功能优化指南
  • 绕过安全狗优化