首页 > 编程语言 >java arrays类方法parallelSort,学习总结

java arrays类方法parallelSort,学习总结

时间:2023-04-11 19:45:48浏览次数:49  
标签:sort parallelSort java arrays Arrays 数组 使用 排序

Arrays.sort与Arrays.parallelSort区别

Arrays.sort()


Arrays.sort() 方法对对象或原始数据类型的数组进行排序。此方法中使用的排序算法是 Dual-Pivot Quicksort。 换句话说,它是快速排序算法的自定义实现,以实现更好的性能。

此方法是单线程的 ,有两种变体:

  • sort(array)–将整个数组按升序排序

  • sort(array, fromIndex, toIndex)–仅将从 fromIndex 到 toIndex 的元素排序

 

优点

缺点

快速处理较小的数据集

大型数据集的性能下降

 

没有利用系统的多个核心

 

 

 

 

 

Arrays.parallelSort()


此方法对对象或原始数据类型的数组进行排序。与 sort() 类似,它也有两个变体来对完整数组和部分数组进行排序

parallelSort() 在功能上有所不同。与 sort() 使用单个线程对数据进行顺序排序不同,它使用并行排序-合并排序算法。它将数组分成子数组,这些子数组本身先进行排序然后合并。

为了执行并行任务,它使用 ForkJoin 池。

但是我们需要知道,只有在满足某些条件时,它才会使用并行性。如果数组大小小于或等于 8192,或者处理器只有一个核心,则它将使用顺序的 Dual-Pivot Quicksort 算法。否则,它使用并行排序。

让我们总结一下使用它的优缺点:

优点

缺点

为大型数据集提供更好的性能

对于大小较小的数组,处理速度较慢

利用系统的多个核心

 

 

 

 

比较


现在,让我们看看在不同大小的数据集上两种方法怎样执行。以下数字是使用JMH 基准测试得出的。测试环境使用 AMD A10 PRO 2.1Ghz 四核处理器和 JDK 1.8.0_221:

数组大小

Arrays.sort()

Arrays.parallelSort()

1000

0.048

0.054

10000

0.847

0.425

100000

7.570

4.395

1000000

65.301

37.998

标签:sort,parallelSort,java,arrays,Arrays,数组,使用,排序
From: https://www.cnblogs.com/yuluoxingkong/p/17307409.html

相关文章

  • java -- Map接口和可变参数
    MapMap:映射,是双列集合顶层接口java.util.Map<k,v>k:key键唯一v:value值可重复常用方法和EntrypublicVput(Kkey,VValue)//指定的键与指定值添加到Map集合中,添加成功返回null,添加失败返回之前的值publicVputIfAbsent(Kkey,VValue)//jdk1.8后新增......
  • (之前的项目复习)我的Java项目实战--校园餐饮商户外卖系统03
    开发笔记三分类管理业务开发公共字段自动填充问题分析前面我们已经完成了后台系统的员工管理功能开发,在新增员工时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工时需要设置修改时间和修改人等字段。这些字段属于公共字段,也就是很多表中都有这些字段,如下:能......
  • Java 生成水印图片
    Java生成水印图片原文链接:https://blog.csdn.net/qq_42151956/article/details/121976565工具类返回BufferedImage,写入文件生成水印图片,可见代码一、核心代码/***生成背景透明的文字水印**@paramwidth生成图片宽度*@paramheight生成图片高度*@param......
  • umeditor粘贴图片自动上传到服务器(Java版)
    ​ 当前功能基于PHP,其它语言流程大致相同 1.新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /* 上传word配置 */    "wordActionName":"wordupload",/* 执行上传视频的action名称 */    "wordFieldName":"upfile",/* 提交的......
  • 在网页中写javascript
    在网页中写Javascript1.在网页中直接嵌入<scriptlanguage="javascript"></script>**script标签可以放在head和body标签里面**<scriptlanguage="javascript">varnow=newDate();varhour=now.getHours();var......
  • 聊聊如何运用JAVA注解处理器(APT)
    什么是APTAPT(AnnotationProcessingTool)它是Java编译期注解处理器,它可以让开发人员在编译期对注解进行处理,通过APT可以获取到注解和被注解对象的相关信息,并根据这些信息在编译期按我们的需求生成java代码模板或者配置文件(比如SPI文件或者spring.fatories)等。APT获取注解及生成代......
  • KindEditor粘贴图片自动上传到服务器(Java版)
    ​图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码://判断剪贴......
  • Java实现Excel导入和导出,看这一篇就够了(珍藏版)
    前言Java实现表格的相关操作进行了封装,本次封装是基于POI的二次开发,最终使用只需要调用一个工具类中的方法,就能满足业务中绝大部门的导入和导出需求。1.功能测试1.1测试准备在做测试前,我们需要將【2.环境准备】中的四个文件拷贝在工程里(如:我这里均放在了com.zyq.util.exc......
  • Java创建文件时同时需要创建外层多个文件夹
    在Java中,如果您使用File类创建一个新文件,并且指定的路径中包含不存在的文件夹,那么会抛出IOException异常,因为Java不会自动创建缺少的目录结构。要解决这个问题,可以通过以下方法来手动创建缺失的目录:使用File.mkdirs()方法在所需的目录结构下创建文件夹。例如:1Filefile......
  • 随笔(十六)『通过图片URL下载图片-Java』
    publicvoiddownloadInvitationImage(Map<String,Object>params,HttpServletResponseresponse){StringvisitPath=(String)params.get("visitPath");//公网urlServletOutputStreamsos=null;InputStreamis......