D
dacat
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, ort => 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]
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, ort => 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]