Skip to content

simple-benchmark 是一个简单的 Java 方法性能测试 SDK。主要用于开发环境下,对方法进行短时间(如 1 到 15 分钟以内)的性能测试,并得到一个简单的性能报告,以便于快速的评估方法的实际性能指标。

License

Notifications You must be signed in to change notification settings

mingfer/simple-benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple Benchmark

License Apache 2.0 blue java 1 Maven Central

Simple Benchmark 是一个简单的 Java 方法性能测试 SDK。主要用于开发环境下,对方法进行短时间(如 1 到 15 分钟以内)的性能测试,并得到一个简单的性能报告,以便于快速的评估方法的实际性能指标。如果需要更加详尽和专业的性能数据,请使用 JMeter 工具。

集成

JDK 版本

Simple Benchmark 要求 1.8 或以上的 JDK 版本。

Maven 依赖

要在基于 Maven 的项目上使用,请使用以下依赖项:

<dependency>
  <groupId>cn.mingfer</groupId>
  <artifactId>simple-benchmark</artifactId>
  <version>${latest-version}</version>
  <scope>test</scope>
</dependency>

使用

Simple Benchmark 实现了一个计数的测试器和一个计时的测试器,默认情况下,测试结果示例如下:

20:01:46 success: 000000041  failed: 000000  TPS: 000041 RTT: 210.402ms
20:01:47 success: 000000108  failed: 000000  TPS: 000067 RTT: 160.257ms
20:01:48 success: 000000179  failed: 000000  TPS: 000071 RTT: 134.440ms
20:01:49 success: 000000249  failed: 000000  TPS: 000070 RTT: 147.903ms
20:01:50 success: 000000315  failed: 000000  TPS: 000066 RTT: 153.323ms
20:01:51 success: 000000390  failed: 000000  TPS: 000075 RTT: 131.452ms
20:01:52 success: 000000462  failed: 000000  TPS: 000072 RTT: 145.598ms
20:01:53 success: 000000533  failed: 000000  TPS: 000071 RTT: 135.035ms
20:01:54 success: 000000609  failed: 000000  TPS: 000076 RTT: 133.958ms
20:01:55 success: 000000680  failed: 000000  TPS: 000071 RTT: 147.998ms
              Name: 计时性能测试
           Threads: 10
          Duration: 10.093s
       Total Count: 682
     Success Count: 682
      Failed Count: 0
       Average TPS: 67
       Average RTT: 147.04ms
Max Time Consuming: 602.487ms
Min Time Consuming: 29.996ms
Test stopped......

计时性能测试

测试方法在指定线程数下一段时间内的性能指标。

class TimingBenchmarkTest {
    @Test
    public void test() {
        Benchmark.ofTiming(
                        Duration.ofSeconds(10), // (1)
                        10, // (2)
                        () -> KeyPairGenerator.getInstance("RSA").generateKeyPair()) // (3)
                .benchmark();
    }
}
  1. 设置测试的时间长度

  2. 设置测试的线程数

  3. 设置测试的内容

计数性能测试

设置固定的测试次数,用指定的线程数测试方法。

class CountBenchmarkTest {
    @Test
    public void test() {
        Benchmark.ofCount(
                        100, // (1)
                        10, // (2)
                        () -> KeyPairGenerator.getInstance("RSA").generateKeyPair()) // (3)
                .benchmark();
    }
}
  1. 设置测试的总次数

  2. 设置测试的线程数

  3. 设置测试的内容

和 JUnit5 集成

在 JUnit5 测试框架下,可以通过注解 BenchmarkCountBenchmarkTiming 对方法进行测试。

BenchmarkTiming 注解示例
class BenchmarkTimingExtensionTest {

    @DisplayName("计时性能测试")
    @BenchmarkTiming(duration = 10, threads = 10)
    public void test() throws GeneralSecurityException {
        KeyPairGenerator.getInstance("RSA").generateKeyPair();
    }
}
BenchmarkCount 注解示例
class BenchmarkCountExtensionTest {

    @DisplayName("计数性能测试")
    @BenchmarkCount(count = 100, threads = 10)
    public void test() throws GeneralSecurityException {
        KeyPairGenerator.getInstance("RSA").generateKeyPair();
    }

}
Table 1. 注解说明

属性

说明

@BenchmarkTiming

threads

测试线程数,默认为 1 个线程。

duration

测试时长,默认值为 1,时间单位由 unit 指定。

unit

测试时长的单位,默认为 TimeUnit.SECONDS

warmUpSeconds

测试预热时间,单位为秒,默认为 0 秒,即不预热。

@BenchmarkCount

threads

测试线程数,默认为 1 个线程。

count

测试的总次数,默认为 1 次。

warmUp

测试的预热次数,默认为 0 次,即不预热。

About

simple-benchmark 是一个简单的 Java 方法性能测试 SDK。主要用于开发环境下,对方法进行短时间(如 1 到 15 分钟以内)的性能测试,并得到一个简单的性能报告,以便于快速的评估方法的实际性能指标。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages