From: Matt Mackall <mpm@selenic.com>
To: Horst von Brand <vonbrand@laptop11.inf.utfsm.cl>
Cc: Andi Kleen <ak@muc.de>, Felipe Alfaro Solana <lkml@mac.com>,
Trond Myklebust <trond.myklebust@fys.uio.no>,
linux-kernel@vger.kernel.org, Buck Huppmann <buchk@pobox.com>,
Neil Brown <neilb@cse.unsw.edu.au>,
Andreas Gruenbacher <agruen@suse.de>,
"Andries E. Brouwer" <Andries.Brouwer@cwi.nl>,
Andrew Morton <akpm@osdl.org>, Olaf Kirch <okir@suse.de>
Subject: Re: [patch 1/13] Qsort
Date: Mon, 24 Jan 2005 13:57:36 -0800 [thread overview]
Message-ID: <20050124215736.GF12076@waste.org> (raw)
In-Reply-To: <200501240402.j0O42iOn010758@laptop11.inf.utfsm.cl>
On Mon, Jan 24, 2005 at 01:02:44AM -0300, Horst von Brand wrote:
> Matt Mackall <mpm@selenic.com> said:
> > On Sun, Jan 23, 2005 at 03:39:34AM +0100, Andi Kleen wrote:
>
> [...]
>
> > > -Andi (who thinks the glibc qsort is vast overkill for kernel purposes
> > > where there are only small data sets and it would be better to use a
> > > simpler one optimized for code size)
>
> > Mostly agreed. Except:
> >
> > a) the glibc version is not actually all that optimized
> > b) it's nice that it's not recursive
> > c) the three-way median selection does help avoid worst-case O(n^2)
> > behavior, which might potentially be triggerable by users in places
> > like XFS where this is used
>
> Shellsort is much simpler, and not much slower for small datasets. Plus no
> extra space for stacks.
>
> > I'll probably whip up a simpler version tomorrow or Monday and do some
> > size/space benchmarking. I've been meaning to contribute a qsort for
> > doubly-linked lists I've got lying around as well.
>
> Qsort is OK as long as you have direct access to each element. In case of
> lists, it is better to just use mergesort.
Qsort does not need to do random access. I posted an efficient
doubly-linked list version here four years ago:
template<class T>
void list<T>::qsort(iter l, iter r, cmpfunc *cmp, void *data)
{
if(l==r) return;
iter i(l), p(l);
for(i++; i!=r; i++)
if(cmp(*i, *l, data)<0)
i.swap(++p);
l.swap(p);
qsort(l, p, cmp, data);
qsort(++p, r, cmp, data);
}
--
Mathematics is the supreme nostalgia of our time.
next prev parent reply other threads:[~2005-01-24 21:59 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-22 20:34 [patch 0/13] NFSACL protocol extension for NFSv3 Andreas Gruenbacher
2005-01-22 20:34 ` [patch 1/13] Qsort Andreas Gruenbacher
2005-01-22 21:00 ` vlobanov
2005-01-23 2:03 ` Felipe Alfaro Solana
2005-01-23 2:39 ` Andi Kleen
2005-01-23 3:02 ` Jesper Juhl
2005-01-23 4:46 ` Andi Kleen
2005-01-23 5:05 ` Jesper Juhl
2005-01-23 10:37 ` Rafael J. Wysocki
2005-01-24 4:29 ` Horst von Brand
2005-01-24 15:45 ` Alan Cox
2005-01-24 17:10 ` H. Peter Anvin
2005-01-25 0:43 ` Horst von Brand
2005-01-25 4:06 ` Eric St-Laurent
2005-01-24 22:04 ` Mike Waychison
2005-01-25 6:51 ` Andi Kleen
2005-01-25 10:12 ` Andreas Gruenbacher
2005-01-25 12:00 ` Andi Kleen
2005-01-25 12:05 ` Olaf Kirch
2005-01-25 16:52 ` Trond Myklebust
2005-01-25 16:53 ` Andreas Gruenbacher
2005-01-25 17:03 ` Trond Myklebust
2005-01-25 17:16 ` Andreas Gruenbacher
2005-01-25 17:37 ` Trond Myklebust
2005-01-25 18:12 ` Andreas Gruenbacher
2005-01-25 19:33 ` Trond Myklebust
2005-01-25 19:49 ` Andreas Gruenbacher
2005-01-23 4:29 ` Matt Mackall
2005-01-24 0:21 ` Nathan Scott
2005-01-24 2:57 ` Matt Mackall
2005-01-24 4:02 ` Horst von Brand
2005-01-24 21:57 ` Matt Mackall [this message]
2005-01-23 4:58 ` Felipe Alfaro Solana
2005-01-24 21:20 ` Matt Mackall
2005-01-24 21:50 ` vlobanov
2005-01-23 4:22 ` Matt Mackall
2005-01-23 5:44 ` Willy Tarreau
2005-01-23 21:24 ` Richard Henderson
[not found] ` <1106431568.4153.154.camel@laptopd505.fenrus.org>
2005-01-22 22:10 ` Andreas Gruenbacher
2005-01-22 23:28 ` Matt Mackall
2005-01-23 0:21 ` Matt Mackall
2005-01-23 5:08 ` Andreas Gruenbacher
2005-01-23 5:32 ` Matt Mackall
2005-01-23 12:22 ` Andreas Gruenbacher
2005-01-23 16:49 ` Matt Mackall
2005-01-24 3:48 ` Horst von Brand
2005-01-24 20:15 ` [PATCH] lib/qsort Matt Mackall
2005-01-24 23:09 ` Andrew Morton
2005-01-24 23:30 ` Matt Mackall
2005-01-25 4:11 ` Matt Mackall
2005-01-22 20:34 ` [patch 2/13] Return -ENOSYS for RPC programs that are unavailable Andreas Gruenbacher
2005-02-15 17:04 ` Trond Myklebust
2005-02-16 15:32 ` Andreas Gruenbacher
2005-01-22 20:34 ` [patch 3/13] Add missing -EOPNOTSUPP => NFS3ERR_NOTSUPP mapping in nfsd Andreas Gruenbacher
2005-01-22 20:34 ` [patch 4/13] Allow multiple programs to listen on the same port Andreas Gruenbacher
2005-01-22 20:34 ` [patch 5/13] Allow multiple programs to share the same transport Andreas Gruenbacher
2005-01-22 20:34 ` [patch 6/13] Lazy RPC receive buffer allocation Andreas Gruenbacher
2005-01-22 20:34 ` [patch 7/13] Encode and decode arbitrary XDR arrays Andreas Gruenbacher
2005-02-15 19:17 ` Trond Myklebust
2005-02-16 16:08 ` Andreas Gruenbacher
2005-02-17 14:12 ` Adrian Bunk
2005-01-22 20:34 ` [patch 8/13] Add noacl nfs mount option Andreas Gruenbacher
2005-02-15 17:24 ` Trond Myklebust
2005-02-16 16:10 ` Andreas Gruenbacher
2005-01-22 20:34 ` [patch 9/13] Infrastructure and server side of nfsacl Andreas Gruenbacher
2005-01-22 20:34 ` [patch 10/13] Solaris nfsacl workaround Andreas Gruenbacher
2005-02-15 17:29 ` Trond Myklebust
2005-02-15 20:35 ` Olivier Galibert
2005-02-15 22:43 ` Trond Myklebust
2005-02-15 23:02 ` Olivier Galibert
2005-02-15 23:37 ` Trond Myklebust
2005-02-15 23:43 ` Olivier Galibert
2005-02-16 16:17 ` Andreas Gruenbacher
2005-02-16 17:05 ` Trond Myklebust
2005-02-16 17:39 ` Andreas Gruenbacher
2005-01-22 20:34 ` [patch 11/13] Client side of nfsacl Andreas Gruenbacher
2005-02-15 17:49 ` Trond Myklebust
2005-02-22 13:41 ` Andreas Gruenbacher
2005-02-22 14:13 ` Trond Myklebust
2005-01-22 20:34 ` [patch 12/13] ACL umask handling workaround in nfs client Andreas Gruenbacher
2005-01-25 1:20 ` Andreas Gruenbacher
2005-02-15 18:04 ` Trond Myklebust
2005-02-22 16:47 ` Andreas Gruenbacher
2005-02-22 17:43 ` Trond Myklebust
2005-01-22 20:34 ` [patch 13/13] Cache acls on the nfs client side Andreas Gruenbacher
-- strict thread matches above, loose matches on Subject: below --
2005-01-24 0:28 [patch 1/13] Qsort James Lamanna
2005-01-24 3:44 Charles R Harris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050124215736.GF12076@waste.org \
--to=mpm@selenic.com \
--cc=Andries.Brouwer@cwi.nl \
--cc=agruen@suse.de \
--cc=ak@muc.de \
--cc=akpm@osdl.org \
--cc=buchk@pobox.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lkml@mac.com \
--cc=neilb@cse.unsw.edu.au \
--cc=okir@suse.de \
--cc=trond.myklebust@fys.uio.no \
--cc=vonbrand@laptop11.inf.utfsm.cl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.