From: ara.t.howard@... Date: 2007-04-28T05:20:05+09:00 Subject: Re: Net::LDAP vs ruby/ldap On Sat, 28 Apr 2007, Daniel Berger wrote: > On Apr 27, 1:07 pm, dacat wrote: >> The basic premise of this test was to see how long it would take to do >> the following: >> >> 1000 Basic lookups on a known attribute/value pair over an unencrypted >> connection using anonymous bind for each library. >> >> This post is for informational purposes, I knew the NET::LDAP lib >> would be slower but I wanted to see by how much. >> {if you are new to ruby, the reason it is slower is because its a TRUE >> ruby implementation of the LDAP rfc. while on the other hand the ruby/ >> ldap lib is a C front end to the openldap library} >> >> Bottom line is -- I just figured i would share. >> Code: >> ---------------- >> require 'benchmark' >> include Benchmark >> >> LOOP_COUNT = 1000 >> require 'ldap' >> require 'net/ldap' >> >> HOST = 'somehost.com' >> S_ATTR = 'some attribute that exists that can be lookedup' >> S_VAL = 'a value for the attribute that iss valid' >> TREE_BASE = 'a valid base ex. o=com' >> >> class LdapTest >> >> def net_ldap_test >> ldap = Net::LDAP.new :host => HOST, :port => 389 >> filter = Net::LDAP::Filter.eq( S_ATTR, S_VAL ) >> ldap.search( :base =>TREE_BASE, :filter => filter ) do |entry| >> a=entry.dn >> end >> nil >> end >> >> def ldap_test >> conn = LDAP::Conn.new(HOST, LDAP::LDAP_PORT) >> filter = "(#{S_ATTR}=#{S_VAL})" >> conn.search(TREE_BASE, LDAP::LDAP_SCOPE_SUBTREE, filter) do |entry| >> a=entry.dn >> end >> nil >> end >> >> ldap_test=LdapTest.new >> >> Benchmark.bm(15) do |x| >> x.report("NET::LDAP:") { for i in 1..LOOP_COUNT; >> ldap_test.net_ldap_test; end } >> x.report("ruby-ldap") { for i in 1..LOOP_COUNT ; >> ldap_test.ldap_test; end } >> end >> end >> =============================================================== >> >> My results. >> user system total real >> NET::LDAP: 7.150000 0.580000 7.730000 ( 19.494588) >> ruby-ldap 0.210000 0.120000 0.330000 ( 11.853484) >> >> ruby/ldap :http://ruby-ldap.sourceforge.net/ >> net::ldap :http://rubyforge.org/projects/net-ldap/ >> >> ruby --version >> ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-linux] > > While it's interesting, I'm afraid I have to stick with net-ldap. The > problem with ruby-ldap is that it segfaults in conjunction with > WEBrick, as I know all too well. > > Regards, > > Dan my good friend justin crawford works heavily with ruby and ldap for the universtiy of colorado managing a huge federated authentication system. they use the pure ruby ldap lib because the c version is unstable. he's been using it for several years on a system that's serving ~ 100,000 people - so i think it's fast enough. fyi. -a -- be kind whenever possible... it is always possible. - the dalai lama