高级程序员必会-JMH基准测试示例以及SpringBoot整合JMH

想一下,你和一些高级程序员相差在哪?

redis高可用、JVM、分布式事务、集群、Linux极端故障。但这些无非就一个功能,增删改查CURD。有些人纳闷,我也会增删改查,我怎么不是高级程序员呢?我这里指的是高性能的增删改查

测试系统有多大的压强能力

测试两个Http的性能,这里就是使用基准测试

工作中不管有JMH,还有白盒黑盒以及jmeter压力测试,这些都是需要掌握的

什么是基准测试?

1.由JDK、Oracle提供的微基准测试的一套工具API

2.多用户并发测试和综合场景测试等【性能分析】提供参考依据

3.专门用于进行代码的微基准测试,比较两段代码的性能

基准测试的意义

对业务模型中的重要业务做单独的测试,获取单⽤户运⾏时的各项性能指标,为多⽤户并发 测试和综合场景测试等性能分析提供参考依据

JMH典型使用场景
  1. 已经找出了热点函数,⽽需要对热点函数进⾏进⼀步的优化时,就可以使⽤ JMH 对优化的效 果进⾏定量的分析
  2. 想定量地知道某个函数需要执⾏多⻓时间,以及执⾏时间和输⼊ n 的相关性
  3. ⼀个函数有两种不同实现(例如JSON序列化/反序列化有Jackson和Gson实现),不知道哪种 实现性能更好
例子

1.往列表里放入10万数据,查询uuid在不在这10万条数据中,用List同时访问数量很少时是可以的,但访问数量高,你list.contain性能就会达到瓶颈

2.当用户量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将 JMH 测试结果转换为折线图,可以使用以下步骤: 1. 将 JMH 测试结果保存为 CSV 文件。可以通过在运行测试时添加 `-rff filename.csv` 参数来实现。这将生成一个名为 filename.csv 的文件,其中包含测试结果。 2. 使用一个图表库,例如 JFreeChart 或 Chart.js,读取 CSV 文件并将数据绘制为折线图。 如果使用 JFreeChart,可以按照以下步骤进行操作: 1. 将 JFreeChart 添加到项目的依赖中。 2. 使用 CSV 文件中的数据创建一个 `TimeSeriesCollection` 对象。 3. 创建一个 `JFreeChart` 对象,并将 `TimeSeriesCollection` 对象添加到其中。 4. 将 `JFreeChart` 对象添加到一个 `ChartPanel` 对象中。 5. 将 `ChartPanel` 添加到一个 `JFrame` 中,并显示窗口。 以下是一个简单的示例代码: ```java import java.io.File; import java.io.IOException; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.data.time.Millisecond; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; import com.opencsv.CSVReader; public class JMHChart extends ApplicationFrame { private static final long serialVersionUID = 1L; private TimeSeries series; public JMHChart(final String title) { super(title); this.series = new TimeSeries("JMH Benchmark Results", Millisecond.class); final TimeSeriesCollection dataset = new TimeSeriesCollection(this.series); final JFreeChart chart = createChart(dataset); final ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(800, 600)); setContentPane(chartPanel); } private JFreeChart createChart(final XYDataset dataset) { return ChartFactory.createTimeSeriesChart( "JMH Benchmark Results", "Time", "Score", dataset, true, true, false ); } public void addData(File csvFile) throws IOException { CSVReader reader = new CSVReader(new FileReader(csvFile)); String[] line; while ((line = reader.readNext()) != null) { try { long timestamp = Long.parseLong(line[0]); double score = Double.parseDouble(line[1]); series.add(new Millisecond(timestamp), score); } catch (NumberFormatException e) { // ignore invalid lines } } reader.close(); } public static void main(final String[] args) throws IOException { final JMHChart demo = new JMHChart("JMH Benchmark Results"); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo); demo.setVisible(true); demo.addData(new File("filename.csv")); } } ``` 这个示例代码将 CSV 文件中的数据添加到 `TimeSeries` 对象中,并使用 `createChart` 方法创建一个 `JFreeChart` 对象。然后将 `JFreeChart` 对象添加到 `ChartPanel` 中,并显示窗口。你需要根据你的 CSV 文件的格式和需要绘制的图表类型进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值