On 24/10/06 10:20, Robert van Hulsteijn <[EMAIL PROTECTED]> wrote:

> Distribution: perl-ldap-0.33
> Perl: 5.8
> OS: Windows 2000
> 
> Hi,
> I found that writing an LDIF record with very long attribute values is
> extremely slow. I could narrow this problem down to the function _wrap()
> in the LDIF.pm module. It seems that wrapping the value is quite CPU
> extensive.
> The _wrap() routine isn't very efficient in handling long strings. The
> substr() function seems to be very slow in this case. Using my rewritten
> _wrap() function speeds up things quite well.
> Could you please provide this patch to the next release? We've been using
> this improved function for a while now qith great pleasure.
> 
> Greetings,
> Robert
> 
> ---- old _wrap() -----------------------------
> sub _wrap {
>   if($_[1] > 40) {
>     my $pos = $_[1];
>     while($pos < length($_[0])) {
>       substr($_[0],$pos,0) = "\n ";
>       $pos += $_[1]+1;
>     }
>   }
>   $_[0];
> }
> ---- new _wrap() -----------------------------
> sub _wrap {
>     my $string=$_[0];
>     my $len=$_[1];
>     my $a=(length($string)-$len>0);
>     my $b=((length($string )-$len)/($len-1));
>     join("\n ",unpack("a78" x $a . "a77" x $b . "a*",$string));
> }
> 

I've just committed this (revision 518) - thanks Robert!

Cheers,

Chris


Reply via email to