TP90、TP95、TP99性能指标含义及计算_tp99计算-程序员宅基地

技术标签: TP90  开发经验  TP99  

前言

在性能测试中,我们经常会选择 TP90、TP95 或者 TP99 等水位线作为性能指标。首先,我们先解释一下 TP90、TP95 和 TP99 的含义:

TP90,top percent 90,即 90% 的数据都满足某一条件;
TP95,top percent 95,即 95% 的数据都满足某一条件;
TP99,top percent 99,即 99% 的数据都满足某一条件;
在这里,我们之所以说其“满足某一条件”,是因为在计算的时候,我们既可以向前计算也可以向后计算,例如:
1, 2, 3, …, 98, 99, 100
如上所示,这是一个从 1 至 100 的数列,如果我们想计算其 TP99 的值,其方法为用数列中数值的总个数乘以 99%,即100 * 99% = 99,显然在这个数列中有两个数值满足这个 99 的概念,分别为:

  • 2,即数列中 99% 的数值都大于等于2
  • 99,即数列中 99% 的数值都小于等于99

因此,TP90、TP95 或者 TP99 等水位线是有两种含义的,具体选择哪一种,我们可以按需求自己选择。

计算方式

如果我们要计算 TP90、TP95 或者 TP99 等水位线的值,其前提就是需要我们将所有的待计算值保存起来。那么我们应该用什么数据结构来存储这一系列的值呢?数组?或者列表?实际上,无论我们选择哪一种数据结构,我们都不能假设其长度无限大,因为内存空间是有限的,而且数据结构也有理论上的最大值,但是我们要存储的值的个数却可能是无限的。因此,我们就需要利用有限长度的数据结构存储更多的数值。在这里,数据结构我们选择数组,以计算耗时的 TP90、TP95 或者 TP99 等水位线为例:

double[] SCALE = new double[2400]
int[] countContainer = new int[2400]
如上所示,我们创建了两个长度相同数组,其中

SCALE数组,用来存储耗时的占位符,表示对应的耗时值;
countContainer数组,用来存储某个耗时值的出现次数,与SCALE数组一一对应
例如,SCALE[1024]的值为 1025,而countContainer[1024]的值为 2050,则表示耗时为 1025 的值出现了 2050 次。
又因为耗时的值可以无限大,而我们却不能穷尽其所有值,更切合实际的情况是:大部分的耗时值都集中在某一个区域。因此,我们只需要列出常见的数值,并利用步长来控制即可,具体方法为:

SCALE数组索引0 ~ 999,存储1 ~ 1000,步长为 1
SCALE数组索引1000 ~ 1899,存储1010 ~ 10000,步长为 10
SCALE数组索引1900 ~ 2399,存储10100 ~ 60000,步长为 100
countContainer数组索引0 ~ 2399,均初始化为 0
其中,存储的最大耗时值为 60000,表示 60000 毫秒,也就是 1 分钟。

当记录耗时t的时候,假设t = 1000,

拿着t到SCALE数组中匹配对应的槽位,计算得知SCALE[999] = 1000,则其对应槽位的索引值为999;
到countContainer数组中, 将countContainer[999]得值累计 1
循环步骤 1 和步骤 2
当我们想要计算 TP99 的值,则停止步骤 3,获取耗时的总记录个数sum,即countContainer数组中所有值的累加和,然后:

计算 TP99 的水位线,假设sum * 99% = waterline99
从countContainer[0]开始,从前往后累加数组的值(或者从countContainer[2399]开始,从后往前累加数组的值)
当countContainer[0] + countContainer[1] + … + countContainer[target] >= waterline99的时候,记录target索引
拿着target到SCALE数组中匹配对应的槽位,SCALE[target]即为 TP99 的值
至此,TP99 计算完毕。其它,诸如 TP90 或者 TP95,甚至 TP50 等,可类似计算。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40093255/article/details/115548838

智能推荐

5个酷毙的Python工具-程序员宅基地

文章浏览阅读6.5k次,点赞3次,收藏21次。工欲善其事必先利其器,一个好的工具能让起到事半功倍的效果,Python社区提供了足够多的优秀工具来帮助开发者更方便的实现某些想法,下面这几个工具给我的工作也带来了很多便利,推荐给追求美好事物的你。Python TutorPython Tutor 是由 Philip Guo 开发的一个免费教育工具,可帮助学生攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。通过这个工具,教师或_0_10_python代码阅读工具

【Go】基础语法学习_go的语法知识-程序员宅基地

文章浏览阅读156次。pass_go的语法知识

Tokyo Tyrant(TTServer)系列-启动参数和配置-程序员宅基地

文章浏览阅读144次。启动参数介绍 ttserver命令可以启动一个数据库实例。因为数据库已经实现了Tokyo Cabinet的抽象API,所以可以在启动的时候指定数据库的配置类型。内存hash数据库内存tree数据库hash数据库B+ tree数据库,命令通过下面的格式来使用,‘dbname’制定数据库名,如果省略,则被视作内存hash数据库。ttserver [-host ...

Git获取项目contributor的贡献值_git contributors-程序员宅基地

文章浏览阅读1k次。Github API_git contributors

微服务springcloud下使用websocket作消息推送几异常错误解决_微服务websocket-程序员宅基地

文章浏览阅读2k次。在微服务中使用websocket,解决向前端推送实时消息,之间遇到的问题及解决方法。引入websocket依赖,并进行配置<!-- webSocket 开始--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artif._微服务websocket

WiFi 信号强度和网速有关系吗?_信号强度与网速有关吗-程序员宅基地

文章浏览阅读1w次。知乎用户,学术工程找平衡知乎用户、ruanyuanyu、时光微粒等人赞同 这个问题如果细回答的话有很多内容,这里只能够大致点一下意思。首先WIFI信号的强度和速度肯定是有关系的,信号强度越好,速度越高,所以在802.11ac提高速率的同时,采用MIMO来提高信号的强度(主要是Beamforming)。为了细化理解一下,我们首先要从WIFI速…显示全部 这个问题如_信号强度与网速有关吗

随便推点

JS函数_js节流函数 没有定义方法名-程序员宅基地

文章浏览阅读278次。JS函数有两种定义方式:声明和表达式。区分函数声明和表达式最简单的方法是看 function 关键字出现在声明中的位置(不仅仅是一行代码,而是整个声明中的位置)。如果 function 是声明中 的第一个词,那么就是一个函数声明,否则就是一个函数表达式。一、函数声明:函数声明必须带有标示符(Identifier)(就是大家常说的函数名称)function foo(){} // 声明,因为它是程序的..._js节流函数 没有定义方法名

Python 回调函数实现异步处理-程序员宅基地

文章浏览阅读745次。说到异步处理大家应该会联想到Ajax 处理,那我们先来说说什么是Ajax 请求。Ajax 就相当于是模拟了一个信息发送请求,你可以在很多网站上注册的时候会发现,比如用户名输入“123”,那么它可能会提示你该用户已经存在,而给你的感觉是页面并没刷新,也就是并没有提交表单,而用户名又是存放在数据库内的,也就是说要查询用户名是否存在,就必须得发送表单的里的用户名,然后再在数据库中去查询。而这个过程就是用了Ajax 来处理的,用户输入用户名,当表单的焦点发生变化的时候,则会触发Ajax,然后Aj..

Ubuntu Linux 3D桌面完全教程_linux u3d图形界面启动-程序员宅基地

文章浏览阅读1.9k次。[2013年4月28日更新] Ubuntu Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答。本教程最早是一善鱼 YQ-YSY 于2008年编写并发布在Ubuntu中文论坛forum.ubuntu.org.cn配置美化区3D桌面特效版块的:——《图解Ubuntu8.10和8.04最简便的显卡驱动安装和3D桌面启用方法,compiz fusion常见_linux u3d图形界面启动

高可用 hadoop HA 搭建教程_hadoop hatajian-程序员宅基地

文章浏览阅读1.2k次。高可用 hadoop HA 搭建教程基础环境配置基础环境配置文件配置core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml解释说明相关命令:基础环境配置基础环境配置点击跳转文件配置=========================================================core-site.xml<!-- 指定zookeeper的存放地址--><property> <name&g_hadoop hatajian

SpringCloud: skywalking统一收集微服务的日志_skywalking 微服务日志-程序员宅基地

文章浏览阅读1.6k次。1.在spring boot项目中resource目录添加logback-spring.xml,<?xml version="1.0" encoding="UTF-8"?><configuration> <property name="console" value="%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%tid) | %boldYellow(%thread) | %bold_skywalking 微服务日志

Android开发、adb、monkey测试_monkey测试蓝牙-程序员宅基地

文章浏览阅读1.7k次。手机测试概念传统手机测试 VS 手机应用软件测试传统手机测试:指测试手机本身比如抗压,抗摔,抗疲劳,抗低温高温等。也包括手机本身功能、性能等测试。手机应用软件测试 C/S Client/Server手机应用软件是基于手机操作系统之上开发出来的软件,做这样的测试就叫做手机应用软件测试。手机端常规测试What介绍手机测试的概念架构对于手机端测试,按照平台来分,分为Android和IOS两大主流系统Android开源导致碎片化比较严重,(手机品牌众多,系统版本各异,分辨率不统一,主流手机型号_monkey测试蓝牙

推荐文章

热门文章

相关标签