Michael Bayer wrote: > you need to forward the *actual test program* which you are running. i > have tests for performance which generally show very minute speed > differences between 0.2 and 0.3. The logging statements can be sped up > by making them conditional and maybe removing some.
I've noticed that SA is doing a lot of string formatting in logging statements like this: log.debug('%s %s' % ('green', 'apples')) log.debug("(" + self.abc + "|" + self.xyz + ") " + msg) The logging package is designed to allow string formatting to be deferred until the log statement is actually written to a log (so it only happens when logging is enabled). Here's how you'd take advantage of that: log.debug('%s %s', 'green', 'apples') log.debug("(%s|%s) %s", self.abc, self.xyz, msg) Also, you need to stop writing Perl in Python :) The mapper logging is quite inefficient. Here's a quick example of how that could be improved: class MapperLoggingExample(object): def __init__(self): # ... if logging.is_debug_enabled(self.logger): name = ["(", self.class_.__name__, "|"] if self.entity_name is not None: name.extend(["/", self.entity_name]) if self.local_table: name.append(self.local_table.name) else: name.append(self.local_table) if not self._is_primary_mapper(): name.append("|non-primary") name.append(") %s") logging_name = "".join(name) self.log_fast = lambda msg: self.logger.debug(logging_name, msg) else: self.log_fast = lambda msg: None def log_slow(self, msg): self.logger.debug("(" + self.class_.__name__ + "|" + (self.entity_name is not None and "/%s" % self.entity_name or "") + (self.local_table and self.local_table.name or str(self.local_table)) + (not self._is_primary_mapper() and "|non-primary" or "") + ") " + msg) # usage example m = MapperLoggingExample() m.log_slow("test message") m.log_fast("test message") According to my tests, log_fast() is about 50 times faster than log_slow() when logging is disabled, and marginally faster when logging is enabled. ~ Daniel --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---