Jenda Krynicky wrote:
>
> > How can I optimize the script for a big files ?
> >
> > ....
>
> Change it to :
>
> open(READ, "$ARGV[0]");
> open(WRITE,"> $ARGV[1]");
>
> while(defined($i = <READ>)) {
> $i =~ s/\.Cure/\.fa/g ;
> $i =~ s/cure-/fa-/g ;
> $i =~ s/class=Cure/class=fa/g ;
> $i =~ s/window.name!=\"frSheet\"/false/g ;
> print WRITE $i;
> }
>
> close(READ);
> close(WRITE);
>
> Jenda
It's hard to optimize speed of the above.
Searching and replacing of lang fixed strings is something regexp are
trained for.
You only can optimize if there are K.O.-criteria,
which are quite very fast to find.
E.g. line doesn't have to start with a blank or so.
Perhaps I see another optimization:
s/\.Cure/\.fa/g and s/cure-/fa-/g is nearly the same.
Perhaps it's an idea to make one regexp of it:
s/(\.)?([Cc]ure)(-?)/($1 || $3) ? ($1 . "fa" . $3) : "$1$2$3"/eg;
It's even possible to include the third regexp:
s/(\.|class=)? ([Cc]ure) (-?)
/($1 || $3) ? ($1 . "fa" . $3) : "$1$2$3"/egx;
I don't know whether it's really quicker. It depends on your input.
Just Try it.
Another kind of optimization is optimization of reading the code:
while(<READ>) {
last unless defined;
s/.../..../g;
s/.../..../g
print WRITE $_;
}
It's perhaps not necessary to handle with $i.
Again it can increase speed, because no assignment $i = $_ is implicitly
needed.
Best Wishes,
Andrea
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]