我必须设计一个接口(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 个 int
的 int[]
数组中排序。在标准台式机 (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/