From: <mi...@st...> - 2003-06-24 14:41:23
|
Ed, I wrote my own test script (attached). It's less complex to read but more flexible (through LDAP URL as parameter). Please review. Usage: pref_test.py <LDAP URL> <number of tests> Grab whole sub-tree 100 times (no server-side limit or logging, ~500 entries): $ python perf_test.py "ldap://localhost:1390/dc=stroeder,dc=de?*?sub" 100 Opening connection each time: 20.4206629992 Reusing connection: 16.9708769321 Using ldapsearch: 6.0001270771 I'd appreciate if anyone with C knowledge could review what is done in ldap_result() (LDAPObject.c) and LDAPmessage_to_python() (message.c). Ciao, Michael. --------------------------------- snip --------------------------------- #!/usr/bin/python import sys,os,time,ldap from ldap.ldapobject import LDAPObject from ldapurl import LDAPUrl try: ldap_url = LDAPUrl(sys.argv[1]) num_tests = int(sys.argv[2]) except IndexError: print 'Usage: pref_test.py <LDAP URL> <number of tests>' sys.exit(1) iter = num_tests start_time = time.time() while iter: l = LDAPObject(ldap_url.initializeUrl(),trace_level=0) l.protocol_version = 3 l.simple_bind_s(ldap_url.who or '',ldap_url.cred or '') l.search_s( ldap_url.dn, ldap_url.scope or ldap.SCOPE_BASE, ldap_url.filterstr or '(objectClass=*)', ldap_url.attrs or ['*'] ) l.unbind_s() del l iter -= 1 end_time = time.time() print 'Opening connection each time:',end_time-start_time iter = num_tests start_time = time.time() l = LDAPObject(ldap_url.initializeUrl(),trace_level=0) l.protocol_version = 3 l.simple_bind_s(ldap_url.who or '',ldap_url.cred or '') while iter: l.search_s( ldap_url.dn, ldap_url.scope or ldap.SCOPE_BASE, ldap_url.filterstr or '(objectClass=*)', ldap_url.attrs or ['*'] ) iter -= 1 end_time = time.time() l.unbind_s() del l print 'Reusing connection:',end_time-start_time iter = num_tests start_time = time.time() while iter: os.system('ldapsearch -x -H "%s" -b "%s" -s %s "%s" %s > /dev/null' % ( ldap_url.initializeUrl(), ldap_url.dn, {0:'base',1:'one',2:'sub'}[ldap_url.scope or ldap.SCOPE_BASE], ldap_url.filterstr or '(objectClass=*)', ' '.join(ldap_url.attrs or []) )) iter -= 1 end_time = time.time() print 'Using ldapsearch:',end_time-start_time |