简单的类来测量延迟

这是我编写的用于测量延迟的非常简单的类。 HDRHistogram并不是劳斯莱斯解决方案,但是如果您只想向项目添加一个类,则可以很好地解决问题。

这是一个简单的测试程序,向您展示其用法:

package util;public class LatencyMeasureExample {public static void main(String[] args) throws InterruptedException{//Below are a couple of examplesLatencyMeasure lm = new LatencyMeasure(1000000);System.out.println("Thread.sleep() random");for (int i = 0; i < 100000; i++) {lm.startMeasure();Thread.sleep((long)Math.random()*10);lm.endMeasure();}lm.printStats();lm = new LatencyMeasure(1000000);double d = 0;System.out.println("\nMath.sqrt");for (int i = 0; i < 100000; i++) {lm.startMeasure();d+=Math.sqrt(i);lm.endMeasure();}lm.printStats();}
}

这是一些示例输出:

Thread.sleep() random
Latency measured:0.32 us for 50 percentile0.44 us for 90 percentile0.68 us for 99 percentile26.82 us for 99.9 percentile582.66 us for 99.99 percentile2024.92 us worst percentile
Math.sqrt
Latency measured:0.04 us for 50 percentile0.06 us for 90 percentile0.09 us for 99 percentile0.12 us for 99.9 percentile0.20 us for 99.99 percentile28.17 us worst percentile

只有4种方法:

  • 构造函数:这需要一个int表示要测量的最大次数。 除了对内存的影响外,过大的大小也不是问题。 在此实现中,您至少需要进行10,000次测量才能使代码正常工作。 如果您想花更少的钱,只需在printStats()中适当调整代码即可。
  • 在要测量的代码的任一侧调用startMeasure()和endMeasure()。
  • printStats()打印出结果。

实施如下:

package util;import java.util.Arrays;public class LatencyMeasure {private long[] times;private long time;private int index=0;public LatencyMeasure(int maxCapacity) {times = new long[maxCapacity];for (int i = 0; i < times.length; i++) {times[i] = -1;}}public void startMeasure(){time = System.nanoTime();}public void endMeasure() {times[index++] = System.nanoTime()-time;}public void printStats() {int filled = 0;for (int i = 0; i < times.length; i++) {if (times[i] == -1) {filled = i;break;}}long[] popTimes = new long[filled];System.arraycopy(times, 0, popTimes, 0, filled);Arrays.sort(popTimes);System.out.printf("Latency measured: \n" +" %.2f us for 50 percentile\n" +" %.2f us for 90 percentile\n" +" %.2f us for 99 percentile\n" +" %.2f us for 99.9 percentile\n" +" %.2f us for 99.99 percentile\n" +" %.2f us worst percentile\n",popTimes[popTimes.length / 2] / 1e3,popTimes[popTimes.length * 9 / 10] / 1e3,popTimes[popTimes.length - popTimes.length / 100] / 1e3,popTimes[popTimes.length - popTimes.length / 1000] / 1e3,popTimes[popTimes.length - popTimes.length / 10000] / 1e3,popTimes[popTimes.length - 1] / 1e3);}
}

翻译自: https://www.javacodegeeks.com/2015/05/simple-class-to-measure-latency.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机加分乘法套用,8+8+8+8+8写成乘法算式要怎样写?小学数学为何这么死板?...

88888写成乘法算式只能写8x5不能写5x8吗&#xff1f;小学数学为何这么死板&#xff1f;这个题目来自于某小学的期考试卷&#xff0c;是个填空题&#xff0c;88888写成乘法算式时给了两个空( )和( )&#xff0c;就有人提出来只能写8x5不能写5x8&#xff0c;所以应该只给一个空。…

债券价格和通胀率

一般规律&#xff0c;通胀率于债券收益率正相关。 当通胀率较高时&#xff0c;市场会降低对债券的需求&#xff08;固定息票&#xff09; 》 导致债券价格下跌&#xff0c;收益率上升。转载于:https://www.cnblogs.com/xispace/p/3383357.html

净值:测试编码器/解码器

我最近与Netty进行了一些合作&#xff0c;并且按照此出色的教程中的说明构建了编码器/解码器管道&#xff0c;以测试编码器和解码器是否在正常工作而不必发送真实的消息。 幸运的是&#xff0c;有一个EmbeddedChannel确实使我们的生活变得非常轻松。 假设我们有一条消息“ Fo…

投影元素直接隔离_摸着夜色上露台开投影,是巴塞罗那设计师的浪漫

总有人说&#xff0c;世界为你关上一扇门&#xff0c;定会为你留有一扇窗。在家闷上个把月&#xff0c;窗户直接担起了连接人们与外界的通道。既然观众出不了门&#xff0c;那不如让加油打气的海报们&#xff0c;自己爬上墙好了——人们打开窗子就能撞上。平面设计师Ral Goi一直…

天涯明月刀7月4号服务器维护,7月8日服务器例行维护公告

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼亲爱的玩家&#xff1a;青龙乱舞区、大地飞鹰区、沧海云帆区、把酒邀月区、边城浪子区全部服务器将在7月8日6:00~10:00停机维护更新&#xff0c;&#xff0c;维护完成后上述各服务器客户端版本更新至2.1.20.23&#xff0c;给您带来…

关于ecshop中jquery与js冲突解决的方案

ECShop把AJAX事件和JSON解析的模块放在common/transport.js之中&#xff0c;可以说它也有自己封装的一套工具&#xff0c;这其实是很正常的。但恰恰的&#xff0c;在封装JSON各种方法的同时对object的模型进行了重写&#xff0c;这个就跟jQuery冲突了。因为众所周知的&#xff…

Apache Lucene的结构

不可估量的高贵的Apache软件基金会&#xff08;Apache Software Foundation&#xff09;产生了许多重要产品&#xff08;Ant&#xff0c;CouchDB&#xff0c;Hadoop&#xff0c;JMeter&#xff0c;Maven&#xff0c;OpenOffice&#xff0c;Subversion等&#xff09;&#xff0c…

comcerter无法识别串口_基于FPGA 的MXN维字符识别的实现

基于FPGA 的MXN维字符识别的实现1 概述本文的灵感来源于杨淑英老师的一张PPT&#xff08;手写数字识别&#xff09;&#xff0c;在此特别鸣谢杨淑英老师。一般机器视觉对事物是没有感知的&#xff0c;比如摄像头采集到一张苹果的图片&#xff0c;它本身是不知道那是什么东西&am…

嵌套的json ajax,通过jquery或javascript通过AJAX读取嵌套的JSON并输出到表中

我真的很想有一个快速便捷的方法来遍历JSON中的多个记录&#xff0c;每个记录都有潜在的深层嵌套。我只想输出到表。我不确定$ .each()或$ .ajax()成功的javascript方法需要通过function()传递哪些参数。所有示例似乎都使用通用词“data”或“ obj”&#xff0c;但它们使我感到…

难题:嵌套computeIfAbsent

总览 Java 8库在地图上有一个新方法&#xff0c;computeIfAbsent。 这是一种非常有用的将地图变成与键关联的对象的缓存的方法。 但是&#xff0c;您可能没有考虑过一种组合。 如果您在内部调用computeIfAbsent会发生什么。 map.computeIfAbsent(Key.Hello, s -> {map.com…

python扩展文件_1. 使用 C 或 C++ 扩展 Python

1.12.给扩展模块提供C API很多扩展模块提供了新的函数和类型供Python使用&#xff0c;但有时扩展模块里的代码也可以被其他扩展模块使用。例如&#xff0c;一个扩展模块可以实现一个类型 "collection" 看起来是没有顺序的。就像是Python列表类型&#xff0c;拥有C AP…

swal ajax,Sweetalert详细介绍

好长时间没有更新文章了&#xff0c;年底工作比较忙&#xff0c;确实是没有时间来写文章。今天忙里偷闲&#xff0c;总结了一款前端提示框的插件——sweetalert——推荐给大家。Sweetalert安装Sweetalert官方为我们提供了三种安装方式&#xff1a;方法一 通过bower安装$ bower …

构造函数必须没有代码

构造函数中应完成多少工作&#xff1f; 在构造函数内部进行一些计算然后封装结果似乎是合理的。 这样&#xff0c;当对象方法需要结果时&#xff0c;我们将准备好它们。 听起来是个好方法&#xff1f; 不&#xff0c;这不对。 这是一个坏主意&#xff0c;原因有一个&#xff1a…

一个路由器两个网段互通_如何判断两个IP地址是否在同一个网段?什么是子网掩码?...

前几天咱们了解&#xff1a;三种方法告诉你项目超过255个摄像机怎么设置IP?什么是公网ip&#xff1f;什么又是内网ip&#xff1f;为什么ip地址通常以192.168开头&#xff1f;也学习了&#xff1a;二、三层交换机与路由器的区别&#xff01;但是有好多人对IP这个概念还是不太清…

服务器appcrash的问题怎么修复,win7的ie出现APPCRASH问题怎么处理?

问题事件名称: APPCRASH 怎么解决?这是Win7或者是Vista特有的一个棘手的问题.APPCRASH(app是程序的意思&#xff0c;crash是坠机的意思。就是程序崩溃了/程序撞车……)(APPCRASH是Win7和Vista中特有的故障&#xff0c;就是程序崩溃引起APPCRASH错误的问题很多 如dll加载错误 软…

Jira 随便总结

一、JIRA与事务跟踪工具&#xff0c;被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。 JIRA创建的问题类型包括New Feature、Bug、Task和Improvement四种&#xff0c;还可以自己定义&#xff0c;所以它也一是过程管理系统。 JIR…

http 路径 |_HTTP 请求與响应的格式及 curl 命令使用

介绍 HTTP&#xff0c;主要内容有HTTP 请求包括哪些部分&#xff0c;如何用Chrome开发者工具查看 HTTP 请求内容HTTP 响应包括哪些部分&#xff0c;如何用Chrome开发者工具查看 HTTP 响应内容如何使用 curl 命令HTTP 请求的格式1 动词 路径 协议/版本 2 Key1: value1 2 Key2: v…

A new start!

从今天起&#xff0c;开始每天晚上拿出来半个小时到一个小时的时间来总结今天我做的那些事情&#xff0c;有哪些进步&#xff0c;有哪些不足&#xff0c;有哪些心得和笔记。 以前的学习都是每天学完就往脑袋后面一放&#xff0c;导致很多东西当时学会了&#xff0c;但是后面就都…

华为y7可以人脸识别吗_华为手机经常弹出“系统更新”提示,可以不更新吗?看完涨知识了...

众所周知&#xff0c;无论是手机&#xff0c;还是电脑&#xff0c;我们所使用的系统到了一定的时间&#xff0c;都会进行“系统更新”&#xff0c;尤其是我们使用的苹果手机、华为手机等&#xff0c;就经常会跳出提示&#xff0c;提醒用户“更新系统”&#xff0c;尤其是当我们…

Apache骆驼丝攻示例

如果您想监视&#xff0c;调试&#xff0c;排除流经路由的消息&#xff0c;而又不必从通道中永久消耗消息&#xff0c;那么就需要使用电线 。 有线分流器充当接收者列表&#xff0c;该列表消耗输入通道之外的消息并将其发布到两个输出通道。 第一个是作为主要信道的实际目的地…