Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language


 
 
Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

Ruby Programming Language

Net::LDAP vs ruby/ldap


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]

On Apr 27, 1:07 pm, dacat <fda@gmail.com> wrote:

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

Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc