summaryrefslogtreecommitdiffstats
path: root/ipapython/ipautil.py
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2015-03-25 13:39:43 +0100
committerPetr Vobornik <pvoborni@redhat.com>2015-04-14 19:31:54 +0200
commit11bd9d96f191066f7ba760549f00179c128a9787 (patch)
tree3d20a02cae3af4600793c6a339a2ceeceb9a6a03 /ipapython/ipautil.py
parent0a1a3d73120bdf20ae05bcf663f14ca1a8b02c25 (diff)
downloadfreeipa-11bd9d96f191066f7ba760549f00179c128a9787.tar.gz
freeipa-11bd9d96f191066f7ba760549f00179c128a9787.tar.xz
freeipa-11bd9d96f191066f7ba760549f00179c128a9787.zip
performance: faster DN implementation
DN code was optimized to be faster if DNs are created from string. This is the major use case, since most DNs come from LDAP. With this patch, DN creation is almost 8-10x faster (with 30K-100K DNs). Second mojor use case - deepcopy in LDAPEntry is about 20x faster - done by custom __deepcopy__ function. The major change is that DN is no longer internally composed of RDNs and AVAs but it rather keeps the data in open ldap format - the same as output of str2dn function. Therefore, for immutable DNs, no other transformations are required on instantiation. The format is: DN: [RDN, RDN,...] RDN: [AVA, AVA,...] AVA: ['utf-8 encoded str - attr', 'utf-8 encode str -value', FLAG] FLAG: int Further indexing of DN object constructs an RDN which is just an encapsulation of the RDN part of open ldap representation. Indexing of RDN constructs AVA in the same fashion. Obtained EditableAVA, EditableRDN from EditableDN shares the respected lists of the open ldap repr. so that the change of value or attr is reflected in parent object. Reviewed-By: Petr Viktorin <pviktori@redhat.com>
Diffstat (limited to 'ipapython/ipautil.py')
0 files changed, 0 insertions, 0 deletions