From: S P. <ski...@ea...> - 2007-02-13 07:23:06
|
I changed SMW_DataValue.php to defer computing datavalue members desiredUnits, serviceLinks, and possibleValues until requested. Without this, I verified that a simple inline query like [[Climate:=+]] makes five GetSpecialPropertyValues database queries for the special properties HAS_TYPE, MAIN_DISPLAY_UNIT, DISPLAY_UNIT, POSSIBLE_VALUES, and SERVICE_LINK, even though none is needed. So I'm pretty confident it's a performance win and I checked it in to SVN. It's working locally for me, I hope it doesn't break anything. The inline query still makes a GetSpecialPropertyValues query for SERVICE_LINK, because newAttributeValue() for each result winds up calling the datatype's processValue() which adds service links whether or not they're not needed. SMWDataValue->setUserValue() and SMWDataType->processValue() need to be refactored so they do the minimum work necessary, and other methods get the additional information from a datavalue and datatype. I filed bug 8961 for this. -- =S |