性能

作者: Cuccci | 来源:发表于2020-11-13 21:59 被阅读0次

一、如何提高系统的性能?

1. 衡量系统性能好坏的指标有哪些?

衡量系统的运行速度的指标:服务时间、等待时间
衡量系统的处理能力的指标:吞吐率、QPS、TPS等

2. 如何提升应用的运行速度?

通过优化算法将时间复杂度O(n^2) 优化成时间复杂度O(nlogn)
通过缓存来重用之前计算结果

3. 如何提高应用的处理能力?

可以通过在应用中使用更多的线程来一起处理客户端的请求.

4. 通过增加线程数量是否一定能提升应用的处理能力?

在一定范围内,通过增加线程数量能提升处理能力。如果线程之间存在锁竞争的话,那么当线程数量超过某个阈值之后,应用的处理能力反而会降低。即使线程之间不存在竞争的话,如果线程数量过多导致线程开销过大。

5. 为什么随着线程数量增加,反而有可能会导致处理能力下降?

由于引入多线程本身就会带来的一定开销、线程数量的增加导致锁竞争加剧。

5.1 线程开销有哪些?
5.1.1 上下文切换

如果可运行的线程的数量大于CPU的数量,那么操作系统会将某个正在运行的线程调度出去,从而使其他线程能够使用CPU。这将导致一次上下文切换,在这个过程中将保存当前运行线程的上下文,然后加载新调度进来的线程的上下文。

5.1.2 内存同步

当代码中使用了 synchronized 和 volatile 关键字之后,可能会使用一些特殊指令,即内存栅栏。内存栅栏可能会对性能带来一些间接的影响,因为它将抑制编译器的一些优化操作。

5.1.3 阻塞

线程之间如果存在竞争的同步操作,可能会导致需要操作系统的介入,从而增加开销。

5.2 如何减少锁的竞争?
5.2.1 缩小锁的范围

通过缩小的锁的范围,从而减少锁的持有时间,达到线程的快进快出。常见的缩小的锁的范围:将方法锁改成代码块锁。

5.2.2 减小锁的粒度

通过锁分解和锁分段等技术实现,在这些技术中将采用多个互相独立的锁来保护独立的状态变量,从而降低锁发生竞争的可能性。

5.2.3 放弃使用锁

使用CAS来代替传统的锁方案,这样意味着线程之间不会存在竞争性,能大幅地提高线程并发能力。

相关文章

  • 软件性能测试目录

    软件性能测试Ⅰ 软件性能测试Ⅱ 软件性能测试Ⅲ 软件性能测试Ⅳ 软件性能测试Ⅴ 软件性能测试Ⅵ 软件性能测试Ⅶ 软...

  • 2017.11.10性能优化

    性能优化 1 稳定 2 扩展 3 性能 1 网络性能 2 执行性能 网络性能 网络性能优化 面向对象的...

  • 性能测试概览目录

    性能测试概览Ⅰ 性能测试概览Ⅱ 性能测试概览Ⅲ 性能测试概览Ⅳ

  • Android性能优化 - 消除卡顿

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化 - 内存优化 性能分析工具 - Tra...

  • Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - Trac...

  • 前端性能优化(中)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(上)...

  • 前端性能优化(下)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(中)...

  • 玩转电商应用性能调优

    第1章 入门篇—性能测试基础知识 什么性能测试 性能测试类型 性能测试基本流程 性能测试需求分析 性能测试指标

  • Awesome Extra

    性能优化 性能优化模式 常见性能优化策略的总结 Spark 性能优化指南——基础篇 Spark 性能优化指南——高...

  • 康高特水滑石是一种多功能PVC热稳定剂

    热稳定剂重要的性能是:热稳定性能、加工性能、透明性能、耐候性能、电学性能、卫生性能等 热稳定剂是用于改进PVC配混...

网友评论

      本文标题:性能

      本文链接:https://www.haomeiwen.com/subject/sdrsbktx.html