hey good news, it was mostly something obvious. I now have the the overall time running within 10% of the 0.2.8 test, and the "inner" time is within 20%. It was another one of those debugger lines which I now made conditional.
the other cause for the speed difference is related to the newer functioning of the attributes package vs. 0.2. the 0.3 series is better able to accurately detect what objects have been changed by using a "CommittedState" object that stores a snapshot of each instance as it is loaded from the database. this is in contrast to what previous versions did whereby whenever a "set" or "append" operation took place, the attribute instrumentation would store the "old" version of the attribute at the point of the attribute changing (and the management of list-based values was very complicated and brittle). so the older version moves the overhead from object instantiation to object manipulation..which you can argue is better from a speed perspective since only a subset of loaded objects will actually be manipulated, if any. Although, 0.3 is more efficient speedwise for the creation and manipulation of objects that were not loaded from the DB...so there is some tradeoff stuff happening here. because of its construction, 0.2.8 had no way of detecting changes in values that did not correspond to a "set" operation, such as mutable values that are saved via pickling. it was also more complicated code and was not as flexible - in 0.3, the method of copying/comparing attributes is determined by the corresponding TypeEngine instance instead of being hardcoded (and is therefore customizable). the current architecture was modeled after the way hibernate does it. we also are in place to cleanly allow any collection type to be used for collections which was not very flexible in 0.2. so this an example of code that is clearer, more straightforward, and more functional, but is slightly slower in some cases (and a little faster in others). anyway, current speed test in rev 2127: 0.3/rev 2127: 2006-12-04 15:25:37.203150: Loading sis 2006-12-04 15:25:38.619858: 377 sis loaded 2006-12-04 15:25:38.620749: Creating indicators 2006-12-04 15:25:38.785517: 127 indicators created 2006-12-04 15:25:38.786975: registering... 2006-12-04 15:25:38.877868: ok done ! total time 1.67651295662 real 0m2.658s user 0m1.707s sys 0m0.391s 0.2.8: 006-12-04 15:25:57.421278: Loading sis 2006-12-04 15:25:58.583894: 377 sis loaded 2006-12-04 15:25:58.584764: Creating indicators 2006-12-04 15:25:58.803848: 127 indicators created 2006-12-04 15:25:58.805388: registering... 2006-12-04 15:25:58.824950: ok done ! total time 1.40534806252 real 0m2.255s user 0m1.457s sys 0m0.379s you can bet the 0.1 series was twice as fast as 0.2, too, since there was an even greater level of hardwired behavior. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---