I won't have time to look at this until this weekend.
I will respond with at least an explanation sometime this weekend.
--
Mike
On Thu, Apr 27, 2000 at 10:36:24AM +0200, Akim Demaille wrote:
>
> | From: Akim Demaille <[EMAIL PROTECTED]>
> | Date: 26 Apr 2000 18:41:32 +0200
> |
> | If you concentrate the measure on this very script, the performance
> | penalty is frightening:
> |
> | It certainly is. This is a performance bug in mawk.
> | I observed the bug in mawk 1.3.3.
> |
> | To work around the problem somewhat, please try replacing this:
> |
> | while (sub(/__oline__/, oline))
> | continue
> |
> | with this:
> |
> | if ($0 ~ /__oline__/)
> | while (sub(/__oline__/, oline))
> | continue
>
> !!!
>
> I don't understand this at all. The performance loss is precisely
> there, you don't even have to apply the same transformation to the
> other patterns.
>
>
> Hm, I see, what's really expensive is the fact that `oline' is
> changing: if you remove `oline++' it flies again. I suppose it means
> it has to recompile something for each value of `oline', but I don't
> understand why recompiling a regex or something is needed when the lhs
> of a s/// is changed.
>
> Thanks for the cure, I'll apply it right now.
>
> Akim
--
Mike Brennan
[EMAIL PROTECTED]