Subject: | Avoid use of DBIS macro in driver internals |
Avoid use of DBIS macro in driver internals because it's very slow on perls configured with
threading enabled (which is the case on most linux distributions).
http://search.cpan.org/grep?cpanid=ADAMK&release=DBD-SQLite-1.22_02&string=DBIS-
%3E&F=1&n=1&C=0
Replace with DBIc_DBISTATE(imp_xxh) in the general case.
For DBIS->debug you should use DBIc_TRACE(imp_xxh, flags, flaglevel, level). See DBIXS.h
for details.
To make those changes you may need to pass the imp_xxh struct pointer into functions.
(Passing both SV *h, the handle, and imp_xxh is recommended).
While you're doing that, you should also aim to eliminate use of dTHR. That's also expensive
and occurs frequently in the code:
http://search.cpan.org/grep?cpanid=ADAMK&release=DBD-SQLite-
1.22_02&string=dTHR&F=1&n=1&C=0
Fix that by adding pTHX_ as the first param (with no trailing comma) of the function that
calls dTHR, and adding aTHX_ as the first argument in all the calls.