当前位置:网站首页>Program Performance Analysis - Complexity Analysis
Program Performance Analysis - Complexity Analysis
2022-08-09 06:02:00 【Wan Chenglinxi】
活动地址:CSDN21天学习挑战赛
目录
一、什么是复杂度分析?
数据结构和算法解决的是:如何让计算机更快时间、更省空间的解决问题.
因此需从执行时间和占用空间两个维度来评估数据结构和算法的性能.
The two concepts of time complexity and space complexity are used to describe program performance,二者统称为复杂度.
复杂度描述的是算法执行时间(或占用空间)与数据规模的增长关系.
二、为什么要进行复杂度分析?
和性能测试相比,复杂度分析有不依赖执行环境、成本低、效率高、易操作、指导性强的特点.
掌握复杂度分析,将能编写出性能更优的代码,有利于降低系统开发和维护成本.
三、如何进行复杂度分析?
1. 大O表示法
1)来源
算法的执行时间与每行代码的执行次数成正比,用T(n) = O(f(n))表示,其中T(n)表示算法执行总时间,f(n)表示每行代码执行总次数,而nOften indicates the size of the data.
2)特点
以时间复杂度为例,由于时间复杂度描述的是算法执行时间与数据规模的增长变化趋势,所以常量阶、低阶以及系数实际上对这种增长趋势不产决定性影响,所以在做时间复杂度分析时忽略这些项.
2. 复杂度分析法则
1)单段代码看高频:比如循环.
2)多段代码取最大:比如一段代码中有单循环和多重循环,那么取多重循环的复杂度.
3)嵌套代码求乘积:比如递归、多重循环等.
4)多个规模求加法:比如方法有两个参数控制两个循环的次数,那么这时就取二者复杂度相加.
四、常用的复杂度级别?
多项式阶:随着数据规模的增长,算法的执行时间和空间占用,按照多项式的比例增长.
包括, O(1)(常数阶)、O(logn)(对数阶)、O(n)(线性阶)、O(nlogn)(线性对数阶)、O( n 2 n^2 n2)(平方阶)、O( n 3 n^3 n3)(立方阶)
非多项式阶:随着数据规模的增长,算法的执行时间和空间占用暴增,这类算法性能极差.包括, O( 2 n 2^n 2n)(指数阶)、O(n!)(阶乘阶)
Complex metric-level sorting:
O(1) < O(logn) < O(n) < O(nlogn) < O( n 2 n^2 n2) < O( n 3 n^3 n3) < … < O( n k n^k nk) < O( 2 n 2^n 2n) < O(n!)
五、如何掌握好复杂度分析方法?
复杂度分析关键在于多练,所谓孰能生巧.
1. 大O标记
从 CPU 的角度来看,这段代码的每一行都执行着类似的操作:读数据-运算-写数据.尽管每行代码对应的 CPU 执行的个数、执行的时间都不一样,但是,我们这里只是粗略估计,所以可以假设每行代码执行的时间都一样,为 单位时间(unit_time).
Algorithm running workload(The sum of the number of times the base operation is repeated)The size is the data scale n 的函数,记作: f ( n ) f(n) f(n) .
Then the code execution time can be expressed as :
T ( n ) = O ( f ( n ) ) T(n)=O(f(n)) T(n)=O(f(n))
大 O 时间复杂度实际上并不具体表示代码真正的执行时间,而是表示代码执行时间随数据规模增长的变化趋势, O O O represents the growth rate and sum of the execution time of the algorithm f ( n ) f(n) f(n) 的增长率相同,称为渐进时间复杂度,简称时间复杂度.
Basic principles of time complexity:
- 只有常数项,认为其时间复杂度为O(1)
- 顺序结构,时间复杂度按加法进行计算
- 循环结构,时间复杂度按乘法进行计算
- 分支结构,时间复杂度取最大值
- 判断一个算法的时间复杂度时,只需要关注最高次项,忽略最高次项的系数,且其它次要项和常数项也可以忽略
- 一般所分析的算法的时间复杂度都是指最坏时间复杂度
渐进式时间,空间复杂度分析只是一个理论模型,Only rough estimates are provided,We can't feel it directlyO(logN)的算法一定优于O(n), 针对不同的宿主环境,不同的数据集,different data size,在实际应用上面可能真正的性能会不同.
2. 最好情况时间复杂度、最坏情况时间复杂度和平均情况时间复杂度
When the same block of code is in different situations,时间复杂度有量级的差距时,Use these three complexity notations to differentiate.
3. 均摊时间复杂度
对一个数据结构进行一组连续操作中,大部分情况下时间复杂度都很低,只有个别情况下时间复杂度比较高,而且这些操作之间存在前后连贯的时序关系,这个时候,我们就可以将这一组操作放在一块儿分析,看是否能将较高时间复杂度那次操作的耗时,平摊到其他那些时间复杂度比较低的操作上.而且,在能够应用均摊时间复杂度分析的场合,一般均摊时间复杂度就等于最好情况时间复杂度.
边栏推荐
猜你喜欢

JVM:(六)运行时数据区之本地方法栈

JVM:(七)运行时数据区之堆

5G对物流行业的积极影响

牛客每日刷题之链表

Distributed timing task framework xxl-job source code analysis

shell正则表达式

Xray-强大的漏洞扫描工具

聚酰胺-胺(PAMAM)树形聚合物-硫化铋复合纳米粒子|硫化铋修饰Gd‑DTPA‑OA配体|科研实验用

Fe3O4/SiO2 Composite Magnetic Nanoparticles Aminated on SiO2-NH2/Fe3O4 Surface (Qiyue Reagent)
![[MySQL]二、进程的关系、MySQL密码破解、建表和建库相关命令](/img/20/a0fb44e9360837146d0ed696c9e992.png)
[MySQL]二、进程的关系、MySQL密码破解、建表和建库相关命令
随机推荐
51串口通信(上)
MATLAB图像处理入门
feof它可不简单。
phpstudy install flarum forum
找两个单身狗
Magnetic Core-Shell Fe3O4 Particles Supported Gold Nanostars | Magnetic Fe3O4-POSS-COOH | Superparamagnetic Fe3O4-Polydopamine Core-Shell Nanoparticles
JMeter test - JMeter 】 【 upload multiple images/batch CSV file upload pictures interface parametric method
Chapter 3 Search and Graph Theory (1)
MYSQLg advanced ------ batch insert millions of data
S7-200SMART PLC Modbus TCP communication
Can Jincang Database Set Transaction Automatic Commit?
SiO2 / KH550 modified ferroferric oxide nano magnetic particles | PDA package the ferromagnetic oxide nanoparticles (research)
A day to learn a public company: Sophia
一天学习一家上市公司:索菲亚
pytorch实现GAN入门案例
Unity五子棋游戏设计 和简单AI实现(1)
MYSQL Advanced Chapter - Query Interception Analysis, Lock Mechanism, Master-Slave Replication
【Word】Word 正文中同时加上下标
剑指offer专项突击版第24天
三剑客进阶