|
Message-ID: <20230217155113.GY4163@brightrain.aerifal.cx> Date: Fri, 17 Feb 2023 10:51:14 -0500 From: Rich Felker <dalias@...c.org> To: Bobby Bingham <koorogi@...rogi.info> Cc: musl@...ts.openwall.com Subject: Re: [RFC] new qsort implementation On Mon, Sep 01, 2014 at 02:12:43AM -0500, Bobby Bingham wrote: > Hi all, > > As I mentioned a while back on IRC, I've been looking into wikisort[1] > and grailsort[2] to see if either of them would be a good candidate for > use as musl's qsort. I'd forgotten about this until Alexander Monakov mentioned it in the context of the present qsort performance thread (introduced with Message-ID: <CAAEi2GextYuWRK-JKtpCLxewyJ2u380m5+s=M_0P=ZBDxyX-xA@...l.gmail.com>) and think it's probably worth pursuing. Apparently there was a bug with constant blocks that would need to be addressed. Since then, we've also added qsort_r. Between this changing the interface needs of the bsearch_pos function and the general avoidance in musl of special cross-component internal interfaces, I suspect it would make sense to just duplicate the bsearch code with the suitable interface as a static function in qsort.c. On performance, it looks like this already has something of an inlined element swap, which may be a big part of the difference. So to evaluate the degree to which it might be better, we really need to do the same with the existing smoothsort code and compare them apples to apples. Regarding the sqrt, nowadays musl's sqrt is basically all integer code except on targets with a native sqrt instruction, so it's probably not catastrophic to performance on softfloat archs. However, it is a little bit sketchy with respect to determinism since it's affected by (and in turn alters) the floating point environment (rounding mode, exception flags). I assume only an approximation within some reasonable bounds (to ensure the desired big-O) is needed, so it probably makes sense to do a fast integer approximation. Maybe even something that's essentially just "wordsize minus clz, >>1, 1<<that, multiply by 1.4 if shifted-out bit was 1" would suffice. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.