相关疑难解决方法(0)

如何在Java中编写正确的微基准测试?

你如何在Java中编写(并运行)正确的微基准测试?

我在这里寻找代码示例和注释,说明要考虑的各种事项.

示例:基准测量应该测量时间/迭代或迭代/时间,为什么?

相关:秒表基准可以接受吗?

java benchmarking jvm jvm-hotspot microbenchmark

835
推荐指数
11
解决办法
11万
查看次数

面向Java面向方面的注释编程

在一篇名为"AOP Fundamentals"的文章中,我要求King的英文解释AOP是什么,以及它做了什么.我收到了一些非常有用的答案和链接到文章,这些文章帮助我了解了所有理论.

但是现在AOP得到了我的全部关注,所有这些文章和章节摘录都很棒,但在每一个案例中,它们都包含了崇高的理论,模糊的UML模型,以及抽象的顺序,这些都是我喜欢的.

这是我对AOP理论的理解,只是为了澄清,所以如果你看到一些看起来不对的东西,请告诉我!

  1. 诸如日志记录,身份验证,同步,验证,异常处理等交叉问题在非AOP系统中变得高度耦合,因为它们几乎被代码库中的每个组件/模块使用.

  2. AOP定义了使用连接点,建议切入点来抽象这些横切关注点的方面(类/方法).

    一个.建议 - 实现跨领域关注(即进行实际记录,验证,验证等)的实际代码(方面的方法,可能?)

    加入点 - 在非AOP代码中触发的事件,导致特定方面的建议被执行("编织"到非AOP代码中)

    C.切入点 - 基本上是连接点(触发事件)到建议执行的映射

  3. 所有方面都模块化(LoggingAspect,AuthenticationAspect,ValidationAspect等)到组件中并使用AspectWeaver注册.当非AOP/POJO代码遇到连接点时,AspectWeaver会围绕非AOP代码"编织"(集成)映射的建议:

public class LoggingAspect
{
    // ...

    public void log(String msg) { ... }
}

public class ExceptionHandlingAspect
{
    // ..

    public void handle(Exception exc) { ... }
}

public class NonAOPCode
{
    // ...

    @LoggingAspect @ExceptionHandlingAspect
    public void foo()
    {
        // do some stuff... …

java aop

62
推荐指数
4
解决办法
5万
查看次数

在Java中测量单线程复杂算法的最佳宏基准测试工具/框架是什么?

我想为我的Java代码(一种单线程,本地,复杂的算法)制定一些性能测量(主要是运行时).(所以我不想要宏基准来衡量JVM实现.)

有了这个工具,我想

  • 分析复杂性,即查看我的代码如何缩放参数n(搜索深度).(我已经在n中进行了参数化的junit测试.)
  • 如果某些代码库的更改会使代码变慢,请进行一些趋势分析以获得警告.

为此,我想使用一个工具或框架

  • 进行统计,最优地计算平均值,标准差和置信区间.这是非常重要的.
  • 可以参数化(参见上面的参数n).这也很重要.
  • 能够制作花哨的情节会很好,但不是必需的
  • 可用于自动(junit-)测试,以警告我,如果我的程序运行缓慢,但这也不是必需的,只是一个加号.

哪些工具/框架满足这些要求?哪一个适合复杂性和趋势分析,为什么?

java performance monitoring

53
推荐指数
3
解决办法
2万
查看次数

用java创建快速/可靠的基准测试?

我正在尝试用java创建基准测试.目前我有以下简单的方法:

public static long runTest(int times){
    long start = System.nanoTime();     
    String str = "str";
    for(int i=0; i<times; i++){
        str = "str"+i;
    }       
    return System.nanoTime()-start;     
}
Run Code Online (Sandbox Code Playgroud)

我目前在另一个多次发生的循环中多次进行此循环,并获得运行此方法所需的最小/最大/平均时间.然后我在另一个线程上开始一些活动并再次测试.基本上我只想获得一致的结果......如果我有一千万次runTest循环,它似乎非常一致:

Number of times ran: 5
The max time was: 1231419504 (102.85% of the average)
The min time was: 1177508466 (98.35% of the average)
The average time was: 1197291937
The difference between the max and min is: 4.58%

Activated thread activity.

Number of times ran: 5
The max time was: 3872724739 (100.82% of the average) …
Run Code Online (Sandbox Code Playgroud)

java benchmarking

5
推荐指数
1
解决办法
4110
查看次数