JMH 测试结果转成折线图
时间: 2024-05-09 09:16:32 浏览: 134
要将 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 文件的格式和需要绘制的图表类型进行修改。
阅读全文