[fpc-pascal] When Pascal code is too fast
ik
idokan at gmail.com
Thu Nov 1 08:15:56 CET 2007
On 11/1/07, Marc Santhoff <M.Santhoff at t-online.de> wrote:
> Am Donnerstag, den 01.11.2007, 00:45 +0200 schrieb ik:
> > Hi List,
> >
> > I have a weird problem. the "fpWrite" is too "slow" for FPC code. When
> > I have the same exact code in C that writes a big amount of buffers of
> > the same size with the same content. It seems that the fpWrite is way
> > too fast, and the can't handle another call in the loop, and I need to
> > slow down the loop using usleep.
> > At the beginning I thought that it was a problem with fpWrite, so I
> > created my own binding, but still the problem is the same.
> >
> > Except then the fact that it seems that FPC is much faster the GCC,
> > any other ideas for such a behavior and what might be the reasons for
> > it ?
> >
> > A POC for such code btw, can be as follows:
> >
> > Pascal:
> > ...
> > while not EOF(f) do
> > begin
> > readln(f,s);
> > fpwrite(f2, S[0], length(S));
> > end;
> > ....
> >
> > C:
> > ...
> > while (! feof(f)) {
> > s_size = fread(f, s, MAX_BUFFER);
> > write(f2, s, s_size);
> > }
> > ...
>
> What error do you get? Lastly I had something similar with fpc writing
> to fast to a non-blocking stderr channel. I haven't had time to do for
> my code, but if you get "ressource temporartily unavailable"-like errors
> switching the file to blocking mode might help.
>
> Something like
>
> fcntl(fileno(stderr), F_GETFL) & O_NONBLOCK
>
> or the pascal equivalent should do.
I'm getting -1 from fpWrite for a "long" period of time, like 6-7 loop
returns before it can continue getting the my next content, only to
have the same problem repeated...
>
> HTH,
> Marc
>
Ido
--
http://ik.homelinux.org/
More information about the fpc-pascal
mailing list