使Net::LDAP性能提高30倍!
尝试使用use Net::LDAPxs替换use Net::LDAP
呵呵,实在抱歉,用如此误导性的标题吸引大家。我想说的并不是通过设置改进Net::LDAP的性能,而是在情况允许的情况下尝试Net::LDAPxs
先看两段代码,第一段是使用Net::LDAP,第二段是使用Net::LDAPxs
use Net::LDAP;
my $base = "ou=language,dc=shallot,dc=com";
my $scope = 1;
my $filter = "(|(cn=buy)(cn=details))";
my @attrs = ('objectClass', 'cn', 'ja');
my $ldap = Net::LDAP->new("127.0.0.1", port => 389);
$ldap->bind("cn=Manager,dc=shallot,dc=com", password => "secret");
my $msg = $ldap->search(base => $base, filter => $filter, scope => "one", attrs=> \@attrs);
my @entries = $msg->entries();
foreach my $entry (@entries) {
foreach my $attr ($entry->attributes()) {
foreach my $val ($entry->get_value($attr)) {
print "$attr<>$val\n";
}
}
}
use Net::LDAPxs;
my $base = "ou=language,dc=shallot,dc=com";
my $scope = 'one';
my $filter = "(|(cn=buy)(cn=details))";
my @attrs = ('objectClass', 'cn', 'ja');
my $ldap = Net::LDAPxs->new("127.0.0.1", Port => "389");
$ldap->bind("cn=Manager,dc=shallot,dc=com", password => "secret");
my $msg = $ldap->search(base => $base, filter => $filter, scope => $scope, attrs => \@attrs);
my @entries = $msg->entries();
foreach my $entry (@entries) {
foreach my $attr ($entry->attributes()) {
foreach my $val ($entry->get_value($attr)) {
print "$attr<>$val\n";
}
}
}
两段代码是完全一样的,除了使用的模块。这两个模块的用户接口部分几乎是完全相同的。程序只是执行了一个简单的bind和一个简单的搜索,共搜索到2个结果,每个entry有3个attributes。是一个非常简单的搜索了。 从测试结果上看,Net::LDAPxs模块要比Net::LDAP快上将近30倍。但Net::LDAPxs仍然在开发阶段,并没有稳定下来,如果要求稳定性的话可以继续使用Net::LDAP。如果大家有什么使用上的问题欢迎讨论。 这个模块就是版主开发的吧 Net::LDAP其实是非常好用的,但忍受这个模块奇慢无比。我已经忍受了很多年了,现在终于有机会彻底改进Perl连接LDAP的性能了。模块仍然处在开发阶段,一些功能还不完整,错误肯定也不少,但我会不断更新。
Net::LDAP实在慢的不能容忍,目前的工作需要我用一个更有效率的方式使用LDAP。 回复 1# py
现在这个模块成熟了没有?还在维护吗?我最近需要使用,所以问一问 回复 5# Perl_Er
这两年我在公司一直用,出过的bug都已经fix了。如果你有幸遇到问题可以直接联系我。
另外,这个模块目前存在的最大问题是安装。我只在Linux(x86/x64)的环境中编译过,其他平台没有做过安装测试。
回复 6# py
ok. thx
页:
[1]