]> granicus.if.org Git - python/commitdiff
Add notes from python-dev about readonly dictionaries.
authorRaymond Hettinger <python@rcn.com>
Mon, 5 May 2003 21:31:51 +0000 (21:31 +0000)
committerRaymond Hettinger <python@rcn.com>
Mon, 5 May 2003 21:31:51 +0000 (21:31 +0000)
Objects/dictnotes.txt

index 46dabb70cb98f3f0c00ad1ee57ffce4142ada38a..673142c6c7d8c0a50c883d3f0b6a4128dc231cd1 100644 (file)
@@ -197,3 +197,24 @@ sizes and access patterns, the user may be able to provide useful hints.
    cache locality, and a simplified search routine.  It also eliminates
    the need to test for dummy entries on each probe.  The preconditions
    for this strategy arise in symbol tables and in the builtin dictionary.
+
+
+Readonly Dictionaries
+---------------------
+Some dictionary use cases pass through a build stage and then move to a
+more heavily exercised lookup stage with no further changes to the
+dictionary.
+
+An idea that emerged on python-dev is to be able to convert a dictionary
+to a read-only state.  This can help prevent programming errors and also
+provide knowledge that can be exploited for lookup optimization.
+
+The dictionary can be immediately rebuilt (eliminating dummy entries),
+resized (to an appropriate level of sparseness), and the keys can be
+jostled (to minimize collisions).  The lookdict() routine can then
+eliminate the test for dummy entries (saving about 1/4 of the time
+spend in the collision resolution loop).
+
+An additional possibility is to insert links into the empty spaces
+so that dictionary iteration can proceed in len(d) steps instead of
+(mp->mask + 1) steps.