Java 测试代码
for (int loop = 0; loop < 1000; loop++) {
int[] data = new Random().ints(0, 256).limit(1024).toArray();
//Arrays.sort(data); // <- 取消这行注释,对比运行结果
long start = System.nanoTime();
int sum = 0;
for (int num : data)
if (num > 128) sum += num;
long end = System.nanoTime();
System.err.printf("%d\t%d\t%d%n", loop, end - start, sum);
}
基本上可以认为数据源是随机的,为什么排序后再选择其中 50%的数据计算累加和比不排序直接计算要慢?
也就说同样的数据规模、分布情况下,有序集合比无序集合速度更快,为什么呢?
附 Excel 上的折线图:(据说直接贴地址就行了,我预览下貌似并没有用) Excel 中删除了 5-6 个偏离均值较大的数据,使折线图看起来清楚点。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.