相关疑难解决方法(0)

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

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

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

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

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

java benchmarking jvm jvm-hotspot microbenchmark

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

Java8 Lambda性能与公共功能

我已经使用Java8 VS对lambda性能进行了一些演示测试.Java8公共功能.

案例如下:

  1. 我有一个10人(5男5女)的名单.

  2. 我想知道哪个女人的年龄在18到25岁之间

现在,当我执行这些步骤数百万次时,结果将是:

使用ForEach的Lambda:395毫秒(使用JUnit时为396毫秒)

公共函数采用:173毫秒(使用JUnit时为169毫秒)

Lambda with Collect花费了334毫秒(使用JUnit时为335毫秒)

现在我没想到lambda的执行时间比普通函数长两倍到六倍.

所以,现在我非常想知道我是否错过了这里的一些东西.

来源可以在这里找到: pastebin.com/BJBk4Tu6


跟进:

  1. 将列表扩展为1.000.000项时
  2. 并过滤所有年轻的成年女性一次

结果将是:

与ForEach一起使用的Lambda:59毫秒

公共职能采取:15毫秒

Lambda with Collect:12毫秒

但是,当我尝试过滤100,000次现有的1.000.000人时,结果将是:

使用ForEach的Lambda:227毫秒

公共职能:134毫秒

带收集的Lambda:172毫秒

因此,作为最终结论:Lambdas在过滤较大列表时更快,而公共函数(旧方法)在过滤较小列表时更快.

此外,在过滤任何列表时,公共功能更快,无论出于何种目的,您都需要这样做.

最新代码: pastebin.com/LcVhgnYv

java performance lambda junit

6
推荐指数
1
解决办法
464
查看次数