当前位置: 首页 > news >正文

昆山网站建设是什么/seo网站有优化培训吗

昆山网站建设是什么,seo网站有优化培训吗,wordpress推广链接插件,有没有什么设计排版类网站Java 8开始引入了Stream流式操作,终于稍微可以像写Python一样写代码了,不用满大街写For语句了,但是因为这篇文章的缘故,导致我对它的性能一直抱有怀疑态度。但是仔细分析示例中的代码,其实会发现虽然它的示例代码中使用…

Java 8开始引入了Stream流式操作,终于稍微可以像写Python一样写代码了,不用满大街写For语句了,但是因为这篇文章的缘故,导致我对它的性能一直抱有怀疑态度。

但是仔细分析示例中的代码,其实会发现虽然它的示例代码中使用了Stream但是其实那个很慢的结果真正大部分的时间都花在了Integer的自动装、拆箱操作上,真正的Java 8应该是怎么写这个代码呢,还是自己动手试验一下好了。

package org.acgeek;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

import java.util.stream.IntStream;

public class ForVsStream {

public static void main(String[] args) {

List forTest = new ArrayList<>();

List streamTest = new ArrayList<>();

IntStream.range(0, 100).forEach(n -> {

int[] a = new Random().ints(5000000, 1, 99999999).toArray();

int e = a.length;

int m = Integer.MIN_VALUE;

long thisTime = System.nanoTime();

for (int i = 0; i < e; i++)

if (a[i] > m) m = a[i];

System.out.println("MAX is " + m);

Long testRes = System.nanoTime() - thisTime;

forTest.add(testRes);

System.out.println("For use time :" + testRes);

System.out.println(IntStream.of(a).toArray().length);

thisTime = System.nanoTime();

// m = IntStream.of(a).max().orElse(0);

// m = IntStream.of(a).reduce(Integer::max).orElse(0);

m = IntStream.of(a).reduce(0, (x, y) -> x > y ? x : y);

System.out.println("MAX is " + m);

testRes = System.nanoTime() - thisTime;

streamTest.add(testRes);

System.out.println("StreamSimple use time :" + testRes);

});

Long forTotal = forTest.stream().reduce(0L, Long::sum);

Long streamTotal = streamTest.stream().reduce(0L, Long::sum);

System.out.println("For total cost: " + forTotal

+ ", min cost: " + forTest.stream().reduce(Long::min).orElse(0L) + ", average cost : " + forTotal / 100);

System.out.println("Stream total cost: " + streamTotal

+ ", min cost: " + streamTest.stream().reduce(Long::min).orElse(0L) + ", average cost : " + streamTotal / 100);

}

}

其实Stream避免反复拆装箱的话使用IntStream就可以了,Java本身为了避免出现这种装箱损耗就提供了这个工具,同时也没有必要自己写reduce函数,直接max就出结果了,但是实际上的结果是reduce更快……

因为考虑到Java的GIT优化可能性,把代码循环执行了100次。求最小值和平均值查看结果,在我这里i5 3.5G 4Core + JDK 1.8.0.102的环境下结果如下:

For total cost: 185314695, min cost: 1309517, average cost : 1834798

Stream total cost: 164412393, min cost: 1291691, average cost : 1627845

所以,Stream其实比For还要快,前提是你要用对方法。

http://www.lbrq.cn/news/936487.html

相关文章:

  • 中国海洋大学做英语作业的网站/百度网址是多少 百度知道
  • 网站搜索框如何做/兰州网站seo
  • 申请网站价格/seo排名优化培训
  • 企业网站源码排行/网站服务器ip地址查询
  • 汽车行业网站建设比较好/技成培训网
  • 网站外包 博客/交换友情链接的途径有哪些
  • 营销型企业网站有哪些类型/seo服务
  • 网站分享链接怎么做/发稿软文公司
  • 苏州知名网站制作设计/武汉百度信息流广告
  • 个人网站做推广/seo排名技巧
  • 辽宁建设工程信息网场内业绩/河南seo
  • 简述网站建设及维护全过程/推广运营
  • 网站编程语言/外国搜索引擎登录入口
  • 佛山做外贸网站流程/百度推广售后客服电话
  • 淘宝客wordpress末班/汕头seo优化
  • 做网站源码/汕头seo
  • 做水利网站需要多少钱/互联网宣传推广
  • 什么网站上可以做简历/爱站seo查询软件
  • 苏州网站建设网站/品牌推广渠道
  • 买房子上哪个网站最好/东莞网站优化公司
  • 手机排行榜/seo的优点有哪些
  • 微信小程序设计网站/汕头网站优化
  • 手机端怎么打开响应式的网站/码迷seo
  • 网站建设 关于我们/kol推广
  • 做网站主要来源/促销活动推广语言
  • 网站建设的基本规范有什么/网站建设公司苏州
  • 无锡网络公司网站建设/体球网足球世界杯
  • 民宿网站开发方案/网络seo啥意思
  • 高端视觉网站/怎样做品牌推广
  • seo网站优化报价/网站域名备案查询
  • 软工八将:软件开发全流程核心角色体系解析
  • 第4章唯一ID生成器——4.2 单调递增的唯一ID
  • Laravel 分页方案整理
  • MySQL5.7主从延迟高排查优化思路
  • C++模板进阶:从基础到实战的深度探索
  • 【QT搭建opencv环境】