• Java程序性能优化之性能概述


    性能的基本概念

    一)、什么叫程序的性能?

    程序运行所需的内存和时间。

    二)、性能的表现形式:

    1).执行速度: 程序的反应是否迅速,响应时间是否足够短。

    2).启动时间:程序从运行到可以处理正常业务所需要的时间。

    3).内存分配: 内存分配是否合理,是否过多的消耗内存或者存在泄露

    4).负载承受能力: 当系统压力上升时,系统的执行速度、响应时间的上升曲线是否平缓。

    三)、衡量性能的基本指标:

    1).执行时间:一段代码从开始到结束所需的时间。

    2).CPU时间:函数或线程占用CPU的时间。

    3).内存分配:程序在运行时所占用内存的空间。

    4).磁盘吞吐量:磁盘I/O的使用情况。

    5).网络吞吐量:网络的使用情况。

    6).响应时间:系统对某用户行为或者事件作出响应的时间。

    四)、木桶原理

    什么叫木桶原理?

    一个木桶能乘多少水不取决于最高的那块木板,而取决于最短那一块。

    一个系统的总体性能不取决于系统性能表现最好的组件,而取决于性能表现最差的组件。

    五)、什么叫性能瓶颈?

    木桶中最短的那一个木板,影响系统的总体性能,系统性能表现最差的组件。

    六)、系统的性能瓶颈类型:

    根据应用的特点不同,任何计算机资源都有可能成为系统瓶颈。

    七)、可能成为系统瓶颈的计算资源:

    1).磁盘I/O: 读写速度慢。

    2).网络操作: 网络环境的不确定性,会导致网络操作速度慢。

    3).CPU: 对资源要求较高的应用,长时间、大量的占用资源,对CPU的争夺也会导致性能问题。

    4).异常: 异常的捕获和处理非常消耗资源。

    5).数据库: 海量数据的读写操作相当费时。

    6).锁竞争: 锁竞争会明显增加线程上下文的开销。

    7).内存: 内存大小不足,应用程序只能尽可能的将常用的核心数据读入内存。

    八)、Amdahl(阿姆达尔)定律

    参考:https://blog.csdn.net/thinkpad_zj/article/details/80240787

    定义了加速比与系统并行度和处理器数量的关系

    加速比:

    加速比 = 1 / ( 串行化比重 + (并行化比重 / cpu数量))

    加速比越高,程序性能优化越好。

    程序性能优化效果取决于串行化比重和cpu数量,串行化比重越低,CPU数量越多,则优化效果越好。

    串行: 只能一个人去做这件事

    例如:烧开水,烧一壶开水 ,水开时间要2分钟,你增加多几个人在那里烧,但开水开的时间是不可变的。

    并行: 可以多个人去干这件事

    例如:扫地,一个人需要2分钟,多加一个人要1分钟,人越多扫地用时越短

    九)、性能调优

    性能调优的分类:

    1).设计调优: 在软件开发前执行,评估系统的潜在问题,规避某一组件的执行问题

    2).代码调优: 在软件开发过程中,在软件开发完成后,在软件维护过程中对程序代码进行改进和优化

                    要求:熟悉相关的语言的API, 对算法,数据结构灵活运用
    

    3).JVM调优: 系统运行期, 设置合理的JVM启动参数

                        JVM是java软件的运行平台,JVM的各项参数会直接影响java程序的性能。例如:JVM堆的大小、
    
                        垃圾回收策略
    
                         要求:了解JVM的运行原理和基本内存结构。
    

    4).数据库调优:

    4.1 、在应用层对sql语句进行优化
    
    例:在对大量拥有相同结构的查询使用PrepareStatement,不使用statement
    
                在使用select查询时,避免使用星号
    
    	4.2、对数据库进行优化
    
    建立具有良好表结构的数据库
    
    例:使用表分区技术,建立索引
    
    4.3、对数据库软件进行优化
    
    例:设置合理大小的共享池、缓存缓冲区
    

    5).操作系统调优

    十)、性能优化的步骤

    确立性能目标 -----》 对软件进行性能测试 -------- 》若未达到性能目标 ------- 》找出系统瓶颈并改进 ----- 》继续测试 ----- 》直至达到所需的性能目标

    金麟岂能忍一世平凡 飞上了青天 天下还依然
  • 相关阅读:
    LAMP环境搭建
    Centos系统下Lamp环境的快速搭建(超详细)
    主题:Windows系统服务器磁盘挂载
    云硬盘
    独立IP与共享IP的区别
    网站备案的注意事项
    云主机与vps虚拟主机的区别
    vim 命令大全 / vi 命令大全
    【Linux】Linux中常用操作命令
    Linux Shell常用技巧(一) RE
  • 原文地址:https://www.cnblogs.com/Auge/p/11534083.html
Copyright © 2020-2023  润新知