小编Mad*_* A.的帖子

为什么Java中的字符串比较(CompareTo)比C#更快?

EDIT3:

运用

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#

  1. n = 1000000 4433毫秒
  2. n = 2000000 10047毫秒

Java的

  1. n = 1000000 1311毫秒
  2. n = 2000000 3164 ms

然后我使用分析工具完成了测量: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)

c# java performance

24
推荐指数
2
解决办法
2251
查看次数

标签 统计

c# ×1

java ×1

performance ×1