Re: qsort (was Re: Solaris) - Mailing list pgsql-general

From Mark Kirkwood
Subject Re: qsort (was Re: Solaris)
Date
Msg-id 3EAF262D.20706@paradise.net.nz
Whole thread Raw
In response to Re: qsort (was Re: Solaris)  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: qsort (was Re: Solaris)  (Martijn van Oosterhout <kleptog@svana.org>)
List pgsql-general
Bruce Momjian wrote:

>Let's have folks run a test program and get the results for some OS's.
>I would prefer to get some results before moving to a formalized option.
>
>
>
I retested Linux 2.4.19 (Mandrake 9) using a simple "many equal keys"
program (see below) compiled with and without BSD qsort.c from Pg source.

$ time ./testbsdqsort
0.80user 0.02system 0:00.83elapsed 97%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (69major+991minor)pagefaults 0swaps
$ time ./testqsort
2.08user 0.04system 0:02.13elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (105major+1967minor)pagefaults 0swaps


So for the many equal keys, BSD qsort is significantly faster.

Clearly there are other test scenarios to examine, but the many equal
keys case is important.

cheers

Mark


-- the program...

#include <stdio.h>
#include <stdlib.h>

const int elements = 1000000;
const int mod = 100;

int sortfunc( const void* n1, const void* n2 ) {
        int ret;
        ret =  (*(int*)n1) -(*(int*)n2) ;
        return ret;
}

int main(int argc, char** argv ) {
        int array[elements];
        int i;
        for ( i = 0; i < elements; i++ ) {
                array[i] = i % mod;
        }
        qsort( array, elements, sizeof(int),sortfunc);
        return 0;
}


-- end


pgsql-general by date:

Previous
From: elein
Date:
Subject: fixed size columns
Next
From: nolan@celery.tssi.com
Date:
Subject: Creating a functional index on a cast?