【发布时间】:2010-11-14 08:54:33
【问题描述】:
我正在尝试在 java 中使用多线程对数组进行排序并注意其执行时间。我也在使用 System.nanoTime()。
这是代码模板
start = System.nanoTime();
sort(); // calls different threads to completely sort the array
end = System.nanoTime()
我想问的是,上面是在主线程中,所以它会给我不正确的时间结果,因为我没有放 main.sleep() ?还是由 JVM 处理。另外,如果我需要快速执行,是否可以在时间执行方面提高上述代码的性能??
【问题讨论】:
-
@user506710:您需要的是统计时间测量。在单个示例中,您可能会“不走运”,例如,操作系统会调度您的应用程序或 JVM 调度您的排序线程。您想要的是多次重复测量,并取 90% 的样本平均值或中位数附近的平均值(在这种情况下,挑剔使用均值或中位数不太可能产生任何影响)。
-
@user506710: 顺便说一句...在当今的四核/八核世界中,单线程排序算法确实很糟糕,我很确定你的 sort()是单线程排序。如果您有任何大量数据要排序,将其替换为多线程排序将大大提高上述代码的性能(遗憾的是,默认的 Java API 不提供任何数据)。
标签: java