使用 JMH 作为 functional/user 级别性能测试的框架。这是错的吗?
Using JMH as a framework for performance testing on functional/user level. Is it wrong?
我想使用 JMH 作为 Web 应用程序 functional/user 级别性能测试的框架。想象一下,我使用 JMH 来测量从 100 个用户同时单击 "Post Your Question" 到用户看到他们的问题发布的那一刻所花费的时间。
这是完全错误的吗?这种方法有什么缺点?
- 我不希望这些测试达到纳秒精度:半秒到秒的精度就可以了。
- 我创建了第一个真实测试,并且非常喜欢它的外观/工作方式 - 正是我所需要的。但是,通过使用微基准框架来做它不打算做的事情,我是否错过了一些大麻烦?
- 不寻找工具推荐
现在使用这种方法大约6个月了,我想说我仍然没有看到任何缺点。我学到的一些东西:
- 尽管 functional/user 级别的准确度较低,但了解各种配置参数的工作方式非常重要(尤其是与 JVM 相关的参数,例如 fork)。它们可能会影响您构建测试的方式、您如何 运行 它们以及您测量什么。
- JMH 确实是轻量级和高效的,因此与使用其他框架获得的结果进行比较可能无效(基本上我们看到 运行 JMH 时性能提升了 10-20%);我必须建立一个新的基线。
- JMH Jenkins plug-in 有助于可视化结果
我想使用 JMH 作为 Web 应用程序 functional/user 级别性能测试的框架。想象一下,我使用 JMH 来测量从 100 个用户同时单击 "Post Your Question" 到用户看到他们的问题发布的那一刻所花费的时间。
这是完全错误的吗?这种方法有什么缺点?
- 我不希望这些测试达到纳秒精度:半秒到秒的精度就可以了。
- 我创建了第一个真实测试,并且非常喜欢它的外观/工作方式 - 正是我所需要的。但是,通过使用微基准框架来做它不打算做的事情,我是否错过了一些大麻烦?
- 不寻找工具推荐
现在使用这种方法大约6个月了,我想说我仍然没有看到任何缺点。我学到的一些东西:
- 尽管 functional/user 级别的准确度较低,但了解各种配置参数的工作方式非常重要(尤其是与 JVM 相关的参数,例如 fork)。它们可能会影响您构建测试的方式、您如何 运行 它们以及您测量什么。
- JMH 确实是轻量级和高效的,因此与使用其他框架获得的结果进行比较可能无效(基本上我们看到 运行 JMH 时性能提升了 10-20%);我必须建立一个新的基线。
- JMH Jenkins plug-in 有助于可视化结果