[Mono-bugs] [Bug 530450] New: Sorting a primitive List<T> is slower than sorting a primitive T []
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Wed Aug 12 12:09:46 EDT 2009
http://bugzilla.novell.com/show_bug.cgi?id=530450
Summary: Sorting a primitive List<T> is slower than sorting a
primitive T []
Classification: Mono
Product: Mono: Class Libraries
Version: SVN
Platform: Other
OS/Version: Other
Status: NEW
Severity: Normal
Priority: P5 - None
Component: CORLIB
AssignedTo: mono-bugs at lists.ximian.com
ReportedBy: amcgovern at novell.com
QAContact: mono-bugs at lists.ximian.com
Found By: ---
In this testcase both functions should take ~ the same time. On my system
sorting a List takes 5.5 seconds and sorting the array takes 3.3 seconds.
>From what i remember from looking at this before - Array.Sort<T> fastpaths
primitive types to strongly typed methods. So Array.Sort<int> will hit a
quicksort (int[]) method. However, List<T>.Sort () calls the Array.Sort<T>
overload passing in Comparer<T>.Default and this prevents us from hitting the
quicksort (int[]) fastpath.
using System;
using System.Threading;
using System.Collections.Generic;
public class MainClass
{
static void Main (string[] args)
{
Random r = new Random (0);
List<int> list = new List<int>();
for (int i = 0; i < 10000000; i++)
list.Add (r.Next ());
int [] array = list.ToArray ();
DateTime start = DateTime.Now;
list.Sort ();
TimeSpan sortList = DateTime.Now - start;
start = DateTime.Now;
Array.Sort<int> (array);
TimeSpan sortArray = DateTime.Now - start;
Console.WriteLine ("Sorting the list took: {0:0.00} seconds",
sortList.TotalSeconds);
Console.WriteLine ("Sorting the array took: {0:0.00} seconds",
sortArray.TotalSeconds);
}
}
--
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the mono-bugs
mailing list