Dav*_*Far 53 java performance monitoring
我想为我的Java代码(一种单线程,本地,复杂的算法)制定一些性能测量(主要是运行时).(所以我不想要宏基准来衡量JVM实现.)
有了这个工具,我想
为此,我想使用一个工具或框架
哪些工具/框架满足这些要求?哪一个适合复杂性和趋势分析,为什么?
Dav*_*Far 67
下面是我找到的所有工具的字母顺序列表.提到的方面是:
参数化; Perl库; 没有JVM微基准测试; 绘制; 持久性; 趋势分析!?; 良好的统计数据(运行给定的测试直到结果稳定;突出异常值).
不可参数化; Java库; JVM微基准测试; 没有密谋; 没有坚持; 没有趋势分析; 统计.
统计数据是否非常好:除了平均值,最大值,最小值和标准差之外,它还计算95%置信区间(通过自举)和串行相关(例如,警告振荡执行时间,如果您的程序行为不确定,可能会发生,例如,因为你使用HashSets).它决定程序必须迭代以获得准确测量的频率,并将其解释为报告和警告(例如关于异常值和序列相关性).
微基准测试也非常好(有关详细信息,请参阅使用java创建快速/可靠的基准测试).
不幸的是,该框架包含一个与许多其他帮助程序类捆绑在一起的util-package.基准类依赖于JSci(Java的科学API)和Mersenne Twister(http://www.cs.gmu.edu/~sean/research/).如果作者Brent Boyer找到时间,他会将库煮沸并添加一个更简单的图示器,以便用户可以直观地检查测量结果,例如相关性和异常值.
参数化; Java库; JVM微基准测试; 绘制; 持久性; 没有趋势分析; 统计.
相对较新的项目,针对Android应用程序量身定制.看起来年轻但前途无量 取决于谷歌番石榴:(
不可参数化!?; Java库; 没有JVM微基准测试!?; 绘制; 通过servlet持久化; 没有趋势分析!?; 没有统计数据!?
支持AOP仪器.
不可参数化; Java库; 没有JVM微基准测试; 使用其他工具绘制绘图,持久性和趋势分析(Jarep或JMX); 统计.
良好的监控,与log4j交织在一起,数据也可以通过编程方式访问或查询,您的程序可以对结果采取措施.
不可参数化!?; Java库; 没有JVM微基准测试; 仅与Jarep密谋; 仅使用JMX持久化; 没有趋势分析; 没有统计数据!?
Jamon的竞争对手,支持监视器的层次结构.
不可参数化; Java库; JVM微基准测试; 绘制; 持久性; 没有趋势分析; 没有统计数据
不错的轻量级监控工具,没有依赖关系:)没有提供足够的统计信息(没有标准偏差),并且相应地扩展plugIn看起来相当困难(聚合器和聚合只有固定的最小,最大和平均的getter).
参数化!?; java库; 没有JVM微基准测试!?; 绘制; 持久性; 趋势分析!?; 统计!?.
良好的监控库,适用于负载测试Web应用程序.
参数化(通过Java API自定义调用者); Java库; JVM微基准测试; 没有阴谋; 没有坚持; 没有趋势分析; 统计.
由Oracle HotSpot专家构建的基准测试工具非常适合在HotJot上进行微基准测试,用于OpenJDK性能工作.采取了极端措施来提供可靠的基准测试环境.除了人类可读的输出外,jmh还提供了一个Java API来处理结果,例如第三方绘图仪和持久性提供程序.
参数化; Java库; JVM微基准测试; 绘制; 持久性(使用CONSOLE,XML或数据库H2); 图形趋势分析; 统计数据(最大值,最小值,平均值,标准差;但不能轻易扩展以进一步统计).
只需在junit测试中添加junit-4规则:)
junit-Benchmarks是Apache 2许可下的开源.
更新:项目移至jmh
主要用于对性能进行趋势分析(使用JUnit测试装饰器TimedTest)和可伸缩性(使用JUnit测试装饰器LoadTest).
参数化; Java库; 没有JVM微基准测试; 没有密谋; 没有坚持; 没有统计数据
不可参数化; Java库; 没有JVM微基准测试; 绘制; 通过JMX持久化; 通过log4j appender进行趋势分析; 统计.
构建日志框架,可以使用AOP.
非常一般的概念:监视器观察预定义的条件并指定满足它们时的反应方式.
主要关注参数化:检查算法是否可扩展,即检查它是否为O(n),O(n log(n)),O(n²)......
java库; JVM微基准测试; 没有密谋; 持久性; 趋势分析; 没有统计数据
参数化; Jython图书馆; 没有JVM微基准测试; 绘制; 持久性; 没有趋势分析; 没有好的统计数据,但很容易扩展.
取决于Jython,HTTPClient,JEditSyntax,ApacheXMLBeans,PicoContainer.
参数化!?; Java工具平台; 没有JVM微基准测试!?; 绘制; 持久性; 图形趋势分析; 没有统计数据!?
测试和性能工具平台是一个巨大的通用和可扩展的工具平台(基于Eclipse和四个EMF模型).因此它功能强大但相当复杂,可以减慢Eclipse速度,并根据自己的需要扩展它(例如,使用统计数据以便它们影响迭代次数)似乎非常困难.
参数化!?; Java库; 没有JVM微基准测试; 绘制; 持久性; 趋势分析!?; 统计!?.
工具适用于大型集群中的监控.
尝试使用http://labs.carrotsearch.com/junit-benchmarks.html.这是对JUni4的延伸,特点:
记录执行时间平均值和标准差.
垃圾收集器活动记录.
每个基准测试JVM预热阶段.
每次运行和历史图表生成.
H2 SQL数据库中的可选结果持久性(高级查询,历史分析).