运用
StringComparer comparer1 = StringComparer.Ordinal;
Run Code Online (Sandbox Code Playgroud)
代替
IComparable v
IComparable w
comparer1.Compare(v, w)
Run Code Online (Sandbox Code Playgroud)
解决了运行时问题.
我已经在Java和C#中对排序算法(例如Quicksort,Mergesort)做了一些基准测试.
我使用Java 7和.NET Framework 4.5来实现和执行我的算法.它表明所有算法都可以使用Java实现更好的运行时.
Quicksort的一些示例运行时:
C#
Java的
然后我使用分析工具完成了测量:C#使用75%的运行时进行字符串比较(即CompareTo),而Java仅使用2%的运行时进行比较.
为什么字符串比较在C#而不是Java中如此昂贵?
编辑:我还测试了C#排序函数Arrays.sort(INPUT)它可以达到约3000毫秒n = 1000000,所以我不认为代码是问题.但无论如何:
这是Quicksort的代码:
public class Quicksort {
public static void sort(IComparable[] a) {
sort(a, 0, a.Length - 1);
}
private static void sort(IComparable[] a, int lo, int hi) {
if (hi <= lo) return;
int j = partition(a, …Run Code Online (Sandbox Code Playgroud)