[Zope-dev] (ZPatterns) Speeding up Skinscripts
Steve Spicklemire
steve@spvi.com
Thu, 29 Mar 2001 17:58:21 -0500 (EST)
Hi John,
Makes sense to me! I'm guessing eval was used since it's a little
simpler not to have to keep track of both the string expression and
the compiled expression.. but that's just a guess. However it does
bring up a point I've been wondering about anyway. Now that Ty and
Phillip have moved on to TransWarp, who will be maintaining all the
changes to ZPatterns? SteveA has done a great job of keeping a
modified version available for folks running 2.3.X, but I've seen no
motion to move those changes into the "real" ZPatterns. Now if you
find a great optimization, will it get movedinto ZPatterns too? There
are a number of folks now whove contributed to the 'ZPatterns' project
and have invested significant effort in projects that are based on
ZPatterns, and would like to see it maintained. (me!) I wonder if
there is some way that stewardship for ZPatterns could be either
'handed off' or 'shared' so that these kinds of things can be kept
up-to-date without delaying the promised TransWarp goodies.
What do you think?
take care,
-steve
>>>>> "JAE" == John Eikenberry <jae-zdev@kavi.com> writes:
JAE> We have a fairly large and complex app framework built on
JAE> ZPatterns. It uses MySQL for storage and the standard
JAE> Specialist/Rack/DataSkin setup with skinscripts for
JAE> attributes and triggers.
JAE> We've found that the speed of getItem is a bit slower than we
JAE> need. For instance retrieving 200 dataskins takes about 8
JAE> seconds on a P2-300. After profiling and digging around I
JAE> think I've found the primary bottleneck. Its the running of
JAE> eval() on the skinscript's python expression (stored in the
JAE> Compute class as _fromex and Triggers as callexpr).
JAE> Note that this becomes the bottleneck after the SQL Method
JAE> gets cached. The query to the DB takes the most time on the
JAE> first hit, but after its been cached it takes very little
JAE> time.
JAE> The optimization I've been looking at is changing the code
JAE> from storing a string and eval()ing the string to using
JAE> compile() at save time and exec() when evaluated.
JAE> Profiling these 2 ways in little test programs seems to
JAE> indicate about a 2.5x speedup. Not huge, but combined with
JAE> better hardware should be enough.
JAE> But I'm curious why this avenue wasn't taken to begin
JAE> with. Seems like the way to do it to me. Am I missing
JAE> something?
JAE> --
JAE> John Eikenberry [jae@kavi.com]
JAE> ______________________________________________________________
JAE> "A society that will trade a little liberty for a little
JAE> order will deserve neither and lose both." --B. Franklin
JAE> _______________________________________________ Zope-Dev
JAE> maillist - Zope-Dev@zope.org
JAE> http://lists.zope.org/mailman/listinfo/zope-dev ** No cross
JAE> posts or HTML encoding! ** (Related lists -
JAE> http://lists.zope.org/mailman/listinfo/zope-announce
JAE> http://lists.zope.org/mailman/listinfo/zope )