[ http://issues.apache.org/jira/browse/MODPYTHON-93?page=all ]

Graham Dumpleton reopened MODPYTHON-93:
---------------------------------------

      Assignee: Graham Dumpleton  (was: Jim Gallacher)
             
In response to question about dictionary like abilities on mailing list, I 
actually had my first good look at what the performance optimisation changes 
did. Previously I only looked at just the bit I thought mattered to the Trac 
issue. Having done this, I notice there are actually some problems in the code. 
Specifically, if add_field() is used after the first time the 'dictionary' 
attribute is accessed, then the new field doesn't actually get put in the 
dictionary and therefore isn't visible to __getitem__(), has_key() etc. In 
other words, the 'dictionary' gets set to a snapshot of 'list' and isn't 
updated there after. I also note that changes which introduced the method 
add_field() aren't reflected in documentation either.

I'll spend some time reviewing the code and fixing things up. I might also make 
the 'dictionary' attribute a private attribute and perhaps look at direct 
changes to 'list' being automatically reflected in any index somehow. In 
respect of 'dictionary' I want to hide it so we avoid problems in the future 
like in Trac where they effectively delved into the implementation, making it 
hard to make changes.

> Improve util.FieldStorage efficiency
> ------------------------------------
>
>                 Key: MODPYTHON-93
>                 URL: http://issues.apache.org/jira/browse/MODPYTHON-93
>             Project: mod_python
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 3.2.7
>            Reporter: Jim Gallacher
>         Assigned To: Graham Dumpleton
>            Priority: Minor
>             Fix For: 3.3
>
>         Attachments: modpython325_util_py_dict.patch
>
>
> Form fields are saved as a list in a FieldStorage class instance. The class 
> implements a __getitem__ method to provide dict-like behaviour.  This method 
> iterates over the complete list for every call to __getitem__. Applications 
> that need to access all the fields when processing the form will show O(n^2) 
> behaviour where n == the number of form fields. This overhead could be 
> avoided by creating a dict (to use as an index) when the FieldStorage 
> instance is created.
> Mike Looijmans has been investigating StringField and Field as well. It is 
> probably reasonable to include information on his work in this issue as well, 
> so that we can consider all of these efficiency issues in toto.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to