zoukankan      html  css  js  c++  java
  • 系统性能分析

    性能

    UNIX系统的程序运行时间

    用户CPU时间:运行代码需要的时间
    系统CPU时间:为运行用户代码而运行其他代码所用的时间
    运行时间:墙钟时间(几点几分几秒)
    运行时间=用户CPU时间+系统CPU时间+其他时间

    最佳选择:在没有其他负载的系统上多次测量实际完成工作负载的墙钟时间。

    (延迟=结束时间-开始时间)
    (吞吐=给定时间内完成的任务量)
    但是:
    (吞吐!=1/延迟)(如果存在并行)

    优化性能时,必须要考虑其他的指标。可以考虑使用复合指标,防止在优化指标的时候忽略另一些指标。

    伪性能指标

    IPC(每周期执行指令数)
    MIPS(每秒百万条指令数)
    GHz(每秒周期数)

    IPC和MIPS是平均指标,可以通过特定的指令组合得到更好的数值;这些指标可以在牺牲彼此和实际性能的情况下得到改进,所以不具有实际意义。

    墙钟时间=时间/周期数周期数/指令数指令数/程序

    相对性能

    减少“X比Y慢50%”这种说法,因为会导致歧义。

    如果(time_x=1.0s),那么(time_y=0.5s(time_y/time_x=0.5)),或者(time_y=0.6666s(time_x/time_y=1.5))

    所以为了避免歧义,我们使用以下的两种描述方式:

    1. “X比Y快n倍”:

      • (n=吞吐X/吞吐Y)
    2. “X比Y快m%”:

      • (1+m/100=吞吐X/吞吐Y)

    加速比

    (speedup=t_{改进前}/t_{改进后})

    Amdahl定律

    并行化程序的铁律。

    假设一段代码中有(f%)的部分可以并行化,那么并行化后的时间为:

    [time_{new} = time_{old}*((1-f)+f/n) ]

    [speedup = time_{old}/time_{new}=1/((1-f)+f/n) ]

    这里(n)表示可用的处理器个数,我们发现,并行程序加速比受限于任务中的串行部分(不可并行化的部分)。

    benchmark

    标准基准程序,例如SPEC等。

    小结

    性能是一个十分综合的量度,所以并没有一刀切的方法。

    这就要求我们在衡量性能的时候,一定要想好想测量什么,明确知道自己测了什么,确保报告的内容准确且有代表性,准备好原始数据可复现。

  • 相关阅读:
    正则表达式
    浏览器 User-Agent 大全
    python3爬虫开发实战 第六课 爬虫基本流程
    python3爬虫开发实战 第五课 常用库的安装
    python3爬虫开发实战 第四课 MySQL
    python3爬虫开发实战 第三课 Redis数据库
    python3爬虫开发实战 第二课 MongoDB安装
    python3爬虫开发实战 第一课 python安装和Pycharm安装
    批处理——数据库
    Aop所需包
  • 原文地址:https://www.cnblogs.com/LuoboLiam/p/13425706.html
Copyright © 2011-2022 走看看