Java 6 排序数组

标签 java arrays sorting

我必须设计一个接口(interface)方法,它接受原始 [] 数组并执行排序并返回原始 [] 数组以满足低延迟(高性能)要求,并将同时被许多线程调用

对于需要非常高性能的目的,使用排序集或 int[] 哪个更好?

如有任何回复,将不胜感激

最佳答案

This method might be called like say a 2 million times per second and I am sure Array.Sort is not efficient for this. The max size can be 100 elements in this array

一个快速的微型基准测试显示 Arrays.sort 可以在大约 100 个 intint[] 数组中排序。在标准台式机 (i7) 上为 1.3 微秒*,使用一个内核。

所以你每秒可以调用它大约 800,000 次(仍然假设你只使用 1 个核心)。所以如果您有 4 个或更多处理器,您应该能够每秒运行 200 万次排序操作

注意:如果您的数组具有典型特征(比如许多重复项或大部分排序或数字都在相当窄的范围内),您可能能够找到更适合的算法,但对于一般用例,我很确定 JDK算法非常强大且高效。


*微基准测试的结果(使用 jmh 完成):

Run result "sort": 1341.298 ±(95%) 11.701 ±(99%) 19.406 nsec/op
Run statistics "sort": min = 1331.329, avg = 1341.298, max = 1352.831, stdev = 9.425
Run confidence intervals "sort": 95% [1329.597, 1352.999], 99% [1321.892, 1360.704]

关于Java 6 排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16612869/

相关文章:

c# - 如何提高非虚拟化 DataGrid 的排序性能?

Java 使用 .jar 文件中的图像

java - 无法使用 apache httpComponent 和 log4j2 输出日志

matlab - 使用显式绑定(bind)(重复元素)分辨率进行排序

c - Array of Linked List,移动到下一个节点错误;

c - 分配新值时二维数组元素不会改变?

sorting - Flutter类型 '_InternalLinkedHashMap<String, dynamic>'不是 'Comparable<dynamic>'类型的子类型

java - 在 java swing jtext 组件中突出显示更改文本

java - 有什么方法可以在忽略字母大小写的 java 中应用正则表达式?

javascript - 使用 Javascript 检查数组是否为空