From: | Mark Kirkwood <markir(at)paradise(dot)net(dot)nz> |
---|---|
To: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
Cc: | Mike Castle <dalgoda(at)ix(dot)netcom(dot)com>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: qsort (was Re: Solaris) |
Date: | 2003-04-30 01:26:05 |
Message-ID: | 3EAF262D.20706@paradise.net.nz |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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
From | Date | Subject | |
---|---|---|---|
Next Message | nolan | 2003-04-30 01:31:51 | Creating a functional index on a cast? |
Previous Message | elein | 2003-04-30 00:35:31 | fixed size columns |