[Koha-devel] Restructuring C4
Ian Walls
ian.walls at bywatersolutions.com
Wed Mar 30 16:47:41 CEST 2011
Fellow Developers,
Last night, I stayed up late running circ/circulation.pl through NYTProf, to
get an idea where we may be able to optimize circulation for speed. After
much frustration (darn session IDs...), I was able to get a report. The
results were... not exactly what I expected.
It seems that much of the time spent running circ/circulation.pl is spent
BEGINing the various C4 modules, multiple times. C4::Items, for example, is
BEGuN 14 times in the execution of circ/circulation.pl. More stats:
C4::Accounts - 8 BEGINs
C4::Acquisition - 14 BEGINs
C4::Auth - 14 BEGINs
C4::Biblio - 14 BEGINs
C4::Branch - 5 BEGINs
C4::Circulation - 22 BEGINs
C4::Context - 18 BEGINs
C4::Dates - 12 BEGINs
... and so on. Even modules like C4::XSLT, C4::SMS, C4::Suggestions, and
C4::Search::PazPar2 are BEGuN several times, without any calls to any of
their subroutines. Some modules, it seems, don't have an END at the end...
I was also able to get a Graphviz file out, showing all the package calls
(folks may remember my keen interest in such things from KohaCon). Running
it through sccmap to detect cycles, I found a very long one between several
of the modules. About 8 packages long.
All this indicate to me that we REALLY need to start thinking about imposing
some kind of structure on C4. I'm thinking something with two-levels:
Level 1 : Calls to the database, other direct interaction with stored data
Level 2: Calls to Level 1 functions to manipulate data
all our scripts would then be modified to call only Level 2, which would
take care of talking to Level 1. At the worst, a particular Level 1 package
would be BEGuN as many times as there were Level 2 packages BEGuN in the
script (and we could certainly do better). It would eliminate all the
cycles, as well.
I can provide access to my report for anyone who needs it, or more details
about how I obtained it. Whatever any of you need to keep this conversation
going. This is a big deal, in my opinion, and we need to start detangling
our code before too much long, or we're going to get seriously bogged down.
Cheers,
-Ian
--
Ian Walls
Lead Development Specialist
ByWater Solutions
Phone # (888) 900-8944
http://bywatersolutions.com
ian.walls at bywatersolutions.com
Twitter: @sekjal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/koha-devel/attachments/20110330/734a94d0/attachment.htm>
More information about the Koha-devel
mailing list