develooper Front page | perl.dbi.dev | Postings from February 2012

Re: dPERINTERP/MY_CXT (was: speeding up XS_DBI_dispatch())

Thread Previous | Thread Next
From:
Tim Bunce
Date:
February 10, 2012 09:20
Subject:
Re: dPERINTERP/MY_CXT (was: speeding up XS_DBI_dispatch())
Message ID:
20120210172030.GX70165@timac.local
On Fri, Feb 10, 2012 at 03:27:24PM +0000, Dave Mitchell wrote:
> On Thu, Jan 26, 2012 at 12:26:44PM +0000, Tim Bunce wrote:
> 
> I attach two patches; the first replaces dPERINTERP with dMY_THX,
> while the second extends this to the DBIS stuff too.
> 
> The headline figure (YMMV etc) is that on a recent threaded perl, these
> two patches collectively make my mysql empty test loop twice as fast!!! :
> 
>     while ($sth->fetch) { $c++ }
> 
> On a perl < 5.10.0 (before dMY_THX was made much more efficient), the
> speedup is less spectacular, but is still about 25%.

That's great news!

> I'm assuming that these won't be applied until after the windows() fork
> issue is fixed, so think of this email more as a preview.

*nods*

> [...]
> 
> If anyone knows of a more elegant way to make a function from DBI.xs
> available to DBD:: code, please let me know!

I hope to take a proper look in the next day or so.

>     1      2      3
> ----- ------ ------
> 40.10      -  29.96    5.8.9    threaded, optimised
> 37.62  33.98  18.96    5.15.7   threaded, optimised
> 
> 12.85      -  12.55    5.8.9  unthreaded, optimised
> 13.41  13.46  12.97    5.15.6 unthreaded, optimised

Most excellent!

> The big saving between (2) and (3) is due to DBD::mysql still using DBIS;
> in particular, for every fetch call.

That should be a good reminder to driver authors to avoid using DBIS!

Thanks again Dave.

Tim.

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About