<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    On 04/06/2011 03:18 AM, Marek Safar wrote:
    <blockquote cite="mid:4D9C13DE.7050008@gmail.com" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      <title></title>
      Hello,<br>
      <br>
      &gt;&gt;&gt;<br>
      <pre wrap="">        public class Sort&lt;T&gt; {
                public delegate int Comparison (T v0, T v1);

You don't need yet another delegate, just use standard Func
</pre>
    </blockquote>
    <br>
    It was just a quick hack to get things going, if we decide it's
    worth having corlib move to my QuickSort implementation, it would
    use the same standard func corlib is using now.<br>
    <br>
    <blockquote cite="mid:4D9C13DE.7050008@gmail.com" type="cite">
      <pre wrap="">
&gt;&gt;
                static readonly int INSERTIONSORT_THRESHOLD = 7;

Why not to used const int ?
</pre>
    </blockquote>
    <br>
    I never learned when to use const vs static/readonly in C# :-(<br>
    <br>
    I assume you suggest const because it is more appropriate, so I will
    :-)<br>
    <br>
    <blockquote cite="mid:4D9C13DE.7050008@gmail.com" type="cite"> <br>
      More importantly what is performance of sorting array of 10-20
      elements called 1000000 times ?<br>
    </blockquote>
    <br>
    <br>
    I've attached a sample program to test this in case you'd like to
    play with it some more, but here are the results on my system for 20
    elements @ 1 million iterations:<br>
    <br>
    [fejj@serenity sorting]$ mono ./qsort-small.exe -random 1000000<br>
    Timings for sorting 20 random items 1000000 times.<br>
    Basic QuickSort finished in:&nbsp;&nbsp;&nbsp;&nbsp; 00:00:03.0227324s<br>
    QuickSort+Insertion finished in: 00:00:02.5357660s<br>
    <br>
    [fejj@serenity sorting]$ mono ./qsort-small.exe -sorted 1000000<br>
    Timings for sorting 20 sorted items 1000000 times.<br>
    Basic QuickSort finished in:&nbsp;&nbsp;&nbsp;&nbsp; 00:00:02.3003898s<br>
    QuickSort+Insertion finished in: 00:00:01.9493073s<br>
    <br>
    [fejj@serenity sorting]$ mono ./qsort-small.exe -reversed 1000000<br>
    Timings for sorting 20 reversed items 1000000 times.<br>
    Basic QuickSort finished in:&nbsp;&nbsp;&nbsp;&nbsp; 00:00:02.4001482s<br>
    QuickSort+Insertion finished in: 00:00:02.3277809s<br>
    <br>
    <br>
    And here are the results for 10 elements @ 1 million iterations:<br>
    <br>
    [fejj@serenity sorting]$ mono ./qsort-small.exe -random 1000000<br>
    Timings for sorting 10 random items 1000000 times.<br>
    Basic QuickSort finished in:&nbsp;&nbsp;&nbsp;&nbsp; 00:00:01.8165901s<br>
    QuickSort+Insertion finished in: 00:00:01.7363410s<br>
    <br>
    [fejj@serenity sorting]$ mono ./qsort-small.exe -sorted 1000000<br>
    Timings for sorting 10 sorted items 1000000 times.<br>
    Basic QuickSort finished in:&nbsp;&nbsp;&nbsp;&nbsp; 00:00:01.7398261s<br>
    QuickSort+Insertion finished in: 00:00:01.5270049s<br>
    <br>
    [fejj@serenity sorting]$ mono ./qsort-small.exe -reversed 1000000<br>
    Timings for sorting 10 reversed items 1000000 times.<br>
    Basic QuickSort finished in:&nbsp;&nbsp;&nbsp;&nbsp; 00:00:01.7166351s<br>
    QuickSort+Insertion finished in: 00:00:01.6798535s<br>
    <br>
    <br>
    Hope that helps,<br>
    <br>
    Jeff<br>
  </body>
</html>