- 浏览: 95971 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
wubo2qml:
虽然很乱,写的确实很实用
jvm参数 -
lazythinker:
楼主总结的不错,
jvm参数 -
kco0910:
子网掩码 验证 255.255.255.0不能通过
IP 子网掩码 正则表达式
package lambdaPerfmTest; import org.junit.Test; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Mode; import org.openjdk.jmh.annotations.OutputTimeUnit; import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.RunnerException; import org.openjdk.jmh.runner.options.Options; import org.openjdk.jmh.runner.options.OptionsBuilder; import org.openjdk.jmh.runner.options.TimeValue; import java.security.SecureRandom; import java.util.*; import java.util.concurrent.TimeUnit; public class PerfTest { private static List<Integer> integers = new ArrayList<>(); public static final int size = 100000; { SecureRandom random = new SecureRandom(); for (int i = 0; i < size; i++) { int i1 = random.nextInt(size); integers.add(i1); } } @Benchmark @OutputTimeUnit(TimeUnit.MILLISECONDS) @BenchmarkMode(Mode.AverageTime) public int iteratorMaxInteger() { int max = Integer.MIN_VALUE; for (Iterator<Integer> it = integers.iterator(); it.hasNext(); ) { max = Integer.max(max, it.next()); } return max; } @Benchmark @OutputTimeUnit(TimeUnit.MILLISECONDS) @BenchmarkMode(Mode.AverageTime) public int forEachLoopMaxInteger() { int max = Integer.MIN_VALUE; for (Integer n : integers) { max = Integer.max(max, n); } return max; } @Benchmark @OutputTimeUnit(TimeUnit.MILLISECONDS) @BenchmarkMode(Mode.AverageTime) public int forMaxInteger() { int max = Integer.MIN_VALUE; for (int i = 0; i < size; i++) { max = Integer.max(max, integers.get(i)); } return max; } @Benchmark @OutputTimeUnit(TimeUnit.MILLISECONDS) @BenchmarkMode(Mode.AverageTime) public int parallelStreamMaxInteger() { Optional<Integer> max; max = integers.parallelStream().reduce(Integer::max); return max.get(); } @Benchmark @OutputTimeUnit(TimeUnit.MILLISECONDS) @BenchmarkMode(Mode.AverageTime) public int lambdaMaxInteger() { return integers.stream().reduce(Integer.MIN_VALUE, (a, b) -> Integer.max(a, b)); } public static void main(String[] args) throws RunnerException { Options opt = new OptionsBuilder() .include(PerfTest.class.getSimpleName()) .warmupTime(TimeValue.seconds(1)) .forks(1) .build(); new Runner(opt).run(); } @Test public void test() { time(new PerfTest()::parallelStreamMaxInteger); } public void time(Runnable run) { long startTime = System.currentTimeMillis(); System.out.println("startTime = " + startTime); run.run(); long endTime = System.currentTimeMillis(); System.out.println("endTime = " + endTime); System.out.println("###################"); long cost = endTime - startTime; System.out.println("cost = " + cost); } public void time(Runnable... runList) { for (Runnable runnable : runList) { time(runnable); } } /* public static void main(String[] args) { PerfTest test = new PerfTest(); test.time(test::forEachLoopMaxInteger, test::forMaxInteger, test::iteratorMaxInteger, test::lambdaMaxInteger, test::parallelStreamMaxInteger); }*/ }
JMH执行结果:
Benchmark Mode Cnt Score Error Units
lambdaPerfmTest.PerfTest.forEachLoopMaxInteger avgt 20 1.026 ± 0.023 ms/op
lambdaPerfmTest.PerfTest.forMaxInteger avgt 20 0.650 ± 0.016 ms/op
lambdaPerfmTest.PerfTest.iteratorMaxInteger avgt 20 1.018 ± 0.030 ms/op
lambdaPerfmTest.PerfTest.lambdaMaxInteger avgt 20 1.687 ± 0.041 ms/op
lambdaPerfmTest.PerfTest.parallelStreamMaxInteger avgt 20 0.747 ± 0.021 ms/op
从结果来看,并行执行效率有提升,lamdba执行效率慢了60%。
发表评论
-
maven打包打依赖包
2018-04-11 17:52 573<build> <plugi ... -
navicat8
2018-02-09 10:46 450NAVJ-W56S-3YUU-MVHV NAVE-WAGB-Z ... -
java jsch执行远程命令
2017-09-30 09:58 676/* * SSHManager * ... -
maven war
2017-09-29 18:45 382<plugin> ... -
intellij 集成sourcemonitor
2017-06-30 10:48 1354在External Tool里面配置 parameters参 ... -
ArrayList添加元素
2017-01-18 14:03 1245如果没有指定长度,则只是初始化一个空数组。 public ... -
java 深度克隆
2016-11-11 14:20 473ByteArrayOutoutStream bo=new ... -
添加目录classpath
2016-08-11 10:52 7481、Linux 自己写脚本 export CP; f ... -
Intellij 导出JAR包
2016-07-19 09:11 614Here's how to build a jar with ... -
Error:java: javacTask: source release 1.8 requires target release 1.8
2016-07-18 09:21 13431、File > Settings > Build ... -
Intellij 不能使用lambda解决办法
2016-07-18 09:06 771In addition to File > Projec ... -
sftp
2012-11-08 17:23 1191public static SshServer getSsd( ... -
列出目录下所有文件
2012-05-26 14:43 887public class FileUtil { ... -
messageHandler
2012-04-12 19:46 807wlzx2011!@# -
btrace下载
2012-04-11 10:48 1618http://kenai.com/projects/btrac ... -
jvm参数
2012-04-11 10:28 8147对于JVM的内存写过的文 ... -
ant 循环
2012-02-06 10:42 3549<taskdef name="foreach& ... -
classpath
2012-02-04 10:25 655java -cp ssh.jar;x11.jar;. X11F ... -
sax xpath
2012-02-02 21:45 850SAXReader saxReader = new SAXRe ... -
java 生成证书
2012-01-21 11:35 876keytool -genkey -alias tomcat - ...
相关推荐
Lambda表达式还可以与Java 8的并行流(Parallel Stream)结合,利用多核处理器的优势进行并行计算,提高程序执行效率。例如: ```java long sum = numbers.parallelStream().mapToInt(Integer::intValue).sum(); ``` ...
Java 8 的 Lambda 表达式是其最显著的新特性之一,它引入了一种更为简洁、函数式的编程风格。Lambda 表达式使得处理匿名函数变得更加简单,尤其在需要定义短小、无状态的代码块时,它们可以极大提高代码的可读性和...
Java 8 的 Lambda 实践是 Java 语言的一个重要更新,引入了函数式编程的概念,极大地简化了处理集合和回调函数的方式。Lambda 表达式是这一特性的重要组成部分,它允许我们以更简洁、更易读的形式来表示匿名函数。...
Java 8是Java语言发展史上一个重要的里程碑,它引入了多种新特性,旨在增强Java语言表达能力和提升开发效率。其中,Lambda表达式和函数式编程的支持是最具影响力的变化之一。 函数式编程是一种编程范式,它将计算视...
Lambda表达式使得代码更加简洁、易读,同时也提升了程序的执行效率。在本文中,我们将深入探讨Lambda表达式的核心概念、语法以及它在实际开发中的应用。 一、Lambda表达式基础 1. **什么是Lambda表达式?** ...
总而言之,Java 1.8的lambda表达式使得代码更简洁、更易读,它与函数式接口和Stream API结合,大大增强了Java在处理数据和执行任务时的灵活性。学习和熟练掌握这些特性,对于提升Java开发效率和代码质量至关重要。
Java 8 是一个重要的 Java 发行版本,引入了许多新特性,极大地提升了开发效率和代码的可读性。在这个"Java8集合 CompletableFuture lambda表达式 新的TimeAPI 和ForkJoin Demo包"中,我们可以深入探讨以下几个关键...
Java Lambda 表达式是Java 8引入的一种新特性,它极大地简化了代码,特别是处理函数式编程场景。Lambda表达式本质上是匿名函数,可以作为参数传递,也可以被存储和复用。在Java中,它们通常与接口一起使用,这些接口...
以上内容涵盖了Java 8 Lambda的最佳实践,通过熟练掌握这些技巧,可以提升Java开发的效率和代码质量。在实际开发中,结合Java 8的新特性,如Stream API和Optional类,可以使代码更加简洁、高效。
Java8 Lambda表达式是Java语言的一个重要特性,它引入了函数式编程的概念,极大地简化了对匿名函数的处理。...通过理解并熟练掌握Lambda表达式和注解,开发者可以更好地利用Java8的特性,提升代码质量和开发效率。
总的来说,Java Lambda表达式与相关的类库更新,如Stream API和日期时间API,共同提升了Java的编程效率和代码可读性,使得开发者能够以更简洁的方式处理复杂任务,尤其在处理大量数据和并发场景下。理解并熟练运用...
Java Lambda表达式是Java 8引入的一个重要特性,它标志着Java开始支持函数式编程风格。在传统的面向对象编程中,我们通常通过创建对象并调用其方法来执行任务。而函数式编程则更加关注结果,而不是执行任务的具体...
Java 8 是一个重要的 Java 发行版本,引入了许多新特性,尤其是对函数式编程的...通过这些示例,你可以深入理解 Java 8 的 lambda 表达式以及与之相关的语言特性,并将它们应用到自己的项目中,提升代码质量与效率。
Java 8是Java语言的一个重要版本,引入了许多创新特性,极大地提升了开发效率和代码的可读性。其中,Stream API和Lambda表达式是最为显著的两大亮点,它们为处理集合数据提供了新的方式,并且简化了多线程编程。下面...
Java8 是一个重要的Java语言版本,它引入了许多创新特性,其中最引人注目的就是流(Stream)API和Lambda表达式。这两个特性极大地提升了Java在处理集合数据时的效率和可读性,使得代码更加简洁、高效。在这个“Java8...
Java 8 是一个重要的版本更新,它引入了许多新特性,其中最引人注目的就是Lambda表达式和Stream API。这两个特性极大地提升了Java处理集合数据的能力,使得代码更加简洁、高效。接下来,我们将深入探讨Lambda表达式...
8. **平行流(Parallel Streams)**:流API支持并行处理,可以充分利用多核处理器的优势,提高程序执行效率。`Collection.parallelStream()`方法创建一个并行流。 9. **Map接口增强**:`Map`接口增加了一些新的方法,...
Java 8 中 Lambda 表达式的基础使用 ...在 Java 8 中,Lambda 表达式是一个非常强大的工具,它可以帮助我们简洁地实现接口函数的实现,并且可以提高编码效率。但是,需要注意其缺点,并且尽量将其用在适合的地方。
Java 8是Java编程语言的一个重大更新,引入了许多新特性,其中最为显著的就是Lambda表达式。Lambda表达式是函数式编程的关键元素,它允许我们以更简洁的方式编写匿名函数,从而简化了处理集合数据和事件驱动编程的...
7. ** Nashorn JavaScript引擎**:Java 8内置了Nashorn JavaScript引擎,使得Java可以直接执行JavaScript代码,实现了Java与JavaScript之间的互操作性。 二、安装与配置 1. **下载与解压**:首先需要下载"java8_32...