读Java性能权威指南(第2版)笔记26_性能测试方法下

【java】java 随机数 Random ThreadLocalRandom SecureRandom 1.概述 出自:《java性能权威指南》 Java 7 提 供 了 3 个 标 准 的 随 机 数 生 成 器 类:java.util.Random、 java.util.concurrent.ThreadLocalRandom 以及java.security.SecureRandom。这三个类在性能方面差距很大。 2. Random 和 ThreadLocalRandom区别 Random 和 ThreadLocalRandom 两个类的差别是, Random 类的主要操作( nextGaussian(. 阅读详情

 

1. 理解可变性

1.1. 理解测试结果如何随时间变化

1.2. 可以通过多次运行测试后取平均值来解决

1.3. 因代码改进而进行的测试叫作回归测试(regression testing)

  • 1.3.1. 原本的代码叫作基线(baseline)

  • 1.3.2. 新的代码叫作样本(specimen)

1.4. 结果的变化越大,越难判断平均值的差异是由于真正的性能问题还是随机变化

1.5. 正确判断两个测试的结果是否有差异需要进行一定程度的统计分析,以确保感知到的差异不是随机波动造成的

  • 1.5.1. 要进行严谨的统计分析,可以使用T检验比较测试结果

  • 1.5.2. 检验的结果表示出现性能倒退的概率,但是它并不能显示出哪些倒退应该忽略,哪些应该追踪。在这两者间找到平衡是一种性能工程艺术

2. 早测试、常测试

2.1. 性能测试作为开发周期中的必要部分

2.2. 早期测试带来的问题

  • 2.2.1. 受发布时间的限制,开发人员需要尽快检入代码

  • 2.2.2. 代码的性能特征会随着代码的变化而变化

2.3. 自动化一切

  • 2.3.1. 所有的性能测试都应该脚本化(或者程序化,不过脚本化通常更容易)

2.4. 测量一切

  • 2.4.1. 自动化必须收集可以想到的每一份数据,以便用于以后的分析

2.5. 在目标系统上运行

  • 2.5.1. 很多重要的调优标志会基于JVM运行的底层硬件系统,计算出它们的默认值

  • 2.5.2. 不同平台的代码编译方式不同

  • 2.5.3. 软件缓存和更重要的硬件缓存,在不同的系统和不同的负载下的表现也不同

3. jmh提供微基准测试

3.1. 适用于纳(nano)/微(micro)/毫(milli)/宏(macro)等规模的基准测试

3.2. 随着Java 9一起发布的

  • 3.2.1. 组成jmh的类库兼容JDK 8及之后的版本

  • 3.2.2. 并没有与任何具体的Java版本绑定

  • 3.2.3. JDK中没有支持jmh的工具

3.3. Blackhole类是jmh的特性

  • 3.3.1. 解决了微基准测试的一个重要问题:如果一个操作的值没有用到,那么编译器会直接优化这个操作

  • 3.3.2. 所以把值传递给Blackhole的consume()方法可以确保值被使用

3.4. Setup注解的Level值

  • 3.4.1. Level.Trial

    • 3.4.1.1. 在基准测试代码初始化时执行一次
  • 3.4.2. Level.Iteration

    • 3.4.2.1. 在基准测试每次迭代前完成(每个测量期)
  • 3.4.3. Level.Invocation

    • 3.4.3.1. 在每次测试方法执行之前完成

3.5. -f 5

  • 3.5.1. 派生试验的运行次数(默认为5)

3.6. -wi 5

  • 3.6.1. 每次试验的预热迭代次数(默认为5)

3.7. -i 5

  • 3.7.1. 每次试验的测量迭代次数(默认为5)

3.8. -r 10

  • 3.8.1. 每次迭代的最少时间(以秒为单位)

  • 3.8.2. 迭代的时间可能比这个时间长,具体取决于目标方法的实际执行时间

3.9. 对于更稳定的测试,降低这些参数的值一般可以缩短运行测试所需的时间

3.10. 通常让Java代码变得更好、更快的方法是写出更好的算法,但这个实现与任何Java调优实践或者Java编码实践无关

宝塔面板一键部署Z-Blog博客 - 内网穿透实现公网访问 Ubuntu系统作为Linux系统的一个重要分支,既有Linux系统的轻量化、高扩展性和长时间稳定运行,也拥有Windows一样的友好图形界面,因此可以作为熟悉服务器系统的良好选择。对于笔者来说,ubuntu系统最大的用处,就是可以让家里老旧的电脑重焕生机,让本已退居二线的电脑与cpolar内网穿透软件搭配,成为私人服务器,搭建自己喜欢的各种网站。今天,笔者就为大家介绍,如何使用cpolar内网穿透+Z-blog搭建私人博客网站。 阅读详情

相关推荐

Unidbg逆向阿里系App签名:从环境补全到算法还原实战

在移动安全与协议分析领域,理解应用层签名机制是核心挑战之一。签名算法作为保障通信安全与身份验证的关键技术,其原理通常涉及哈希、加密及密钥协商等基础密码学概念。在Android平台,核心签名逻辑常被加固并隐藏于Native层SO库中,以对抗动态调试与静态分析,这为安全研究和协议兼容带来了技术障碍。Unidbg作为一种基于模拟执行的逆向工程工具,通过模拟ARM指令集和系统调用,允许研究者在脱离真机环境的情况下,可控地执行和调试SO文件,为解决此类问题提供了创新思路。其技术价值在于实现了对加固代码的确定性分析与算

weixin_42525738的博客 939

《Java性能权威指南》

《Java性能权威指南》

天的博客 621

Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的理论简述和python仿真实现(附源码)

经典论文Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的学习与编程仿真,提供源码

m0_59701926的博客 1238

Java性能权威指南(第2版)读后总结与感想

语言在不断进化发展、jvm也在不断进化发展,在采用java 8 不变的情况下,使用包含新的垃圾回收算法的jdk,使用新的垃圾回收算法能够获得更好的性能体验。了解不难,学精很难,性能调优不仅仅是技术活,更是一门艺术,需要考虑的场景、判断的条件纷繁复杂,各种开关也会相互影响,使用的不好,还不如采用默认方式。验证、测试自然少不了各种工具,既有原生自带的,也有开源或者商业的第三方工具,在这个方面,介绍的也较详细,能够帮忙我们分析性能问题的源头。有些性能建议是包治百病的,比如,使用更小的对象;

lyingSeven的博客 209

【全部更新】2025金地杯E题山西省大学生数学建模思路代码文章教学:高速铁路牵引供电系统能耗优化

问题四将列车的运行速度与发车时间同时作为优化变量,建立联合优化模型,目标是在考虑电价机制和调度均衡性的前提下,使牵引供电系统一天内的总电费支出最小。问题三在考虑分时电价机制的基础上,基于遗传算法优化列车速度组合,使牵引供电系统一天内的总电费支出最小。然而,在实际运营中,不同时段的电价差异显著,合理安排列车的运行时间与运行速度,可有效降低系统的总电费支出。本研究聚焦于高速铁路牵引供电系统的能耗与电费优化问题,针对列车运行速度、发车时间与分时电价的综合影响,提出一系列数学模型,以实现系统能耗与电费的最小化。

xb459149247的博客 5289

EtherCAT-7 从站代码移植-SPI

STM32F103 + AX58100,从站代码移植。

tianya_xuan的博客 3571

▇▇▇mfs权威指南(moosefs)分布式文件系统一站式解决方案(部署,性能测试)不断更新 - 分布式文件系统(FastDFS) - ChinaUnix.net -...

▇▇▇mfs权威指南(moosefs)分布式文件系统一站式解决方案(部署,性能测试)不断更新 - 分布式文件系统(FastDFS) - ChinaUnix.net - ▇▇▇mfs权威指南(moosefs)分布式文件系统一站式解决方案(部署,性能测试)不断更新 - ...

136

高级数据结构之R树(R-tree)

R树(R-tree)是一种将B树扩展到多维情况下得到的数据结构,它最初由Antonin Guttman于1984年提出。B树的结点中会存储一个键的集合,这些键把线分成片段,沿着那条线的点仅属于一个片段。因此,B树使得我们可以很容易地找到点。如果把沿线各处的点表示成B树结点,我们就能够确定点所属唯一子结点,在那里可以找到该点。 Antonin Guttman在他提出R树的经典论文中给出的R树例子...

白马负金羁 1万+

字节跳动算法工程师总结:分享我的6点面试经验,醍醐灌顶!

我有话要说,请仔细看完 我发现一个现象,很多开发5年的程序员仍然停留在crud的阶段,这是什么原因? 最主要的原因就是基础很差,尤其对于JVM和并发编程这方面掌握的比较差,而JVM和并发编程就是非常非常重要的基础了,作为一个Java开发人员如果你连JVM和并发编程掌握的很差,那你是无法写出高质量的代码的,直白说,你就只能做crud的工作,理想的工作和薪资跟你是无缘的,同时也很容易被行业淘汰! 现在大厂面试肯定是从基础开始发问,下面我也贴出了阿里招聘Java开发人员的要求,可以详细的看一下,下面几道是阿里面试

m0_56662269的博客 673

097、Zephyr RTOS驱动开发实战:传感器驱动(陀螺仪)

I2C速率别设太高:LSM6DSO支持最高400kHz,但实际布线有寄生电容时,400kHz容易出错。工业产品我统一用100kHz,稳定压倒一切。FIFO水印值要计算:假设ODR=6.66kHz,每150us产生一组数据,如果水印设32组,则每4.8ms触发一次中断。这个间隔要大于I2C读取耗时(实测约200us),否则中断堆积。电源纹波敏感:陀螺仪对电源噪声敏感,特别是3.3V供电时。我遇到过因为DC-DC纹波太大,陀螺仪输出噪声从0.1dps飙升到2dps。

m0_50546716的博客 118

9篇5章2节:NHIS 数据库的常规数据下载

文章概述了 NHIS-Teen、NHPI NHIS 等补充性调查以及 2024 年 NHIS 数据资源的具体内容,包括问卷材料、技术文档和数据模块,为研究者高效、规范地使用 NHIS 数据提供参考框架。

MD Code 1440

Java国密SM4与AES算法实战对比:性能、生态与选型指南

对称加密是保障数据机密性的核心技术,其原理是通过同一密钥对数据进行加密和解密,确保信息传输的私密性。在Java开发领域,AES(高级加密标准)凭借其全球通用性和成熟的生态,长期占据主导地位,其SPN结构和硬件指令集优化带来了卓越的性能表现。随着信息安全自主可控需求的提升,国密算法SM4作为我国自主研发的分组密码标准,采用Feistel结构和固定32轮设计,在政务、金融等特定场景的合规性价值日益凸显。本文聚焦于SM4与AES在Java环境下的实战对比,通过引入Bouncy Castle Provider解决S

aome1470的博客 327

【系统架构设计师】案例分析考点情况分析和解题技巧(包括2009~2024年考点详情)

复习方法建议仍然是以真题为主,只不过和综合题不同,标准答案并不会涵盖所有可能的考点。案例的考察方法和论文不太一样,它考察两大块的内容:

数据知道的博客 1万+

最新JMeter面试题,紧扣面试实际要求,看完拿下20K

JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是测试人员必须要掌握的工具之一。1、Jmeter的关联用到了哪些方法去实现?2、Jmeter参数化有哪几种方法?3、用户定义的变量和用户参数的区别?4、如何用Jmeter做性能测试?5、如何用Jmeter录制脚本?6、Get和Post的区别?7、Jmeter和SoapUI接口测试有什么区别?8、Jmeter和Postman接口测试有什么区别?

2301_79535544的博客 461

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

26岁月薪5K,“废物式养老”,没学历没技术,这样的我还来得及学习软件测试吗?

我,26岁,即将27岁,如果按虚岁的话就是28岁,如果按妈妈的话,就已经30岁好几了,即将四十。目前未婚,无房,一个人在大城市漂泊,刚毕业工资三四千,到现在拿着月薪5千的工资,一人吃饱全家不饿的薪水,过得抠抠搜搜。在一家不大不小企业里拧螺丝,且在一群龙凤之人中毫无晋升希望,妥妥剩女废物一个。

m0_71745903的博客 624

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

什么是SPEC基准测试?

SPEC(The Standard Performance Evaluation Corporation)标准性能评测机构,是国际上对系统应用性能进行标准评测的权威组织,它旨在确立、修改以及认定一系列服务器应用性能评估的标准。目前包括8大测试规范、26种测试模型。该组织成立于1988年,是由斯坦福大学、清华大学、微软、等全球几十所知名大学、研究机构、IT企业组成的第三方测试组织。SPEC经过多年的发展积累,该测试标准得到了全球众多用户的广泛认可。

人生不怕起点低,就怕没追求 3894

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PDF 合并测试:性能与内容完整性

我们一直在改进 PDF 合并工具,并希望通过测试对比其与其他工具的表现。该工具支持合并包括大文件在内的完整文档。

2401_87189539的博客 1195

阿里飞猪测开一面,过了!

最近很多同学都在私信问,普通学历想进大厂应该达到什么能力,目前这个行情还有没有机会,以及面试应该准备到什么程度。下面分享一个我的一个粉丝朋友,双非本科,毕业一两年面试阿里飞猪的一面测开面经,面试已通过。以下面试详情:面试官说公司期望做业务测试,独立负责业务测试,有一定代码能力。做一些自动化,全权负责某一个业务,要求挺高,独立新开业务线。1.自我介绍2.介绍项目和测试流程3.这些项目是你独立负责的吗?4.你负责哪个部分?(前端?后端?服务端?

2301_79535544的博客 376

激发产品最大潜能 从SPEC看品质服务器性能的极限释放

品质源于技术的掌控,对于基础技术的理解和掌握能够让产品更好地释放价值,从而提高产品的品质。2021年浪潮信息全新发布的M6系列服务器已打破174项SPEC世界性能测试纪录,包揽SPEC CPU Cint最具普适性,SPEC Power业界能耗评估,SPEC Java企业级Java应用,SPEC Virt等五大赛道冠军。在历次新产品的SPEC测试中,浪潮信息都能够创造新的最好成绩,除了产品具备的硬核性能表现,也离不开研发测试团队领先的性能优化能力。 浪潮信息M6产品平台全面引领SPEC测试赛道 SPEC(

sinat_40967647的博客 94

字节是真的难进,测开4面终上岸,压抑5个月,终于可以放声呐喊

这次字节的面试,给我的感触很深,意识到基础的重要性。一共经历了五轮面试:技术4面+HR面。下面看正文本人自动专业毕业,压抑了五个多月,终于鼓起勇气,去字节面试,下面是我的面试过程,很多面试题,都是靠记忆写的,希望能帮助到大家(致那些努力的人)。

2401_86943461的博客 678

数据结构与算法 - 双向BFS:优化传统BFS的时间与空间开销

本文探讨了双向BFS算法在优化传统BFS性能方面的优势。传统BFS在搜索起点到终点的最短路径时,会因指数级增长的搜索空间导致时间和内存开销过大。双向BFS通过同时从起点和终点发起搜索,在中间相遇时终止,将时间复杂度从O(b^d)降至O(b^(d/2)),显著提升效率。 文章通过mermaid图对比了单向与双向BFS的搜索过程,并提供了Java实现模板,展示如何交替扩展搜索集合并检测相遇点。最后以LeetCode 127单词接龙问题为例,说明双向BFS在实际问题中的应用价值。该算法特别适用于起点和终点明确的大

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

【Netty源码解读和权威指南】第12篇:Netty ByteBuf全解析(中)—— 堆内、堆外、复合缓冲区,三大模式横评

Netty ByteBuf内存模式深度解析 本文深入剖析Netty ByteBuf的三种内存模式:堆内内存(Heap ByteBuf)、堆外直接内存(Direct ByteBuf)和复合缓冲区(Composite ByteBuf)。通过生产事故案例揭示错误选择内存模式的严重后果,对比分析各类缓冲区的优缺点及适用场景。 核心要点: Heap ByteBuf:分配回收快但I/O需额外复制,适合业务计算和小消息处理 Direct ByteBuf:零拷贝优势明显,适合网络I/O和大数据传输,但需注意内存管理 Com

xyghehehehe的专栏 350

技术分享链接汇总[201806]

内容整理自->java高级交流群【329019348】更多Java高级交流文章 2018/06/01 对 IntegerCache 的探讨 2018/06/04 讲真,别再使用JWT了! nginx强制使用https访问(http跳转到https) SpringBoot + Redis Cluster 秒杀架构实践 2018/06/05 Java Socket编程基础及...

六月星空2011的博客 589
上一篇: 读Java性能权威指南(第2版)笔记25_性能测试方法上
下一篇: 读Java性能权威指南(第2版)笔记27_线程和同步性能上
躺柒
博客等级 码龄4年 7004粉丝 1321原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值