Re: [PATCH] mailsplit and mailinfo: gracefully handle NUL characters
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- May 17, 2008, 00:26 UTC
- Message-ID
- <alpine.DEB.1.00.0805170120550.30431@racer>
- In-Reply-To
- <482E2175.8030904@thorn.ws>
Hi,
On Fri, 16 May 2008, Tommy Thorn wrote:
Show 11 quoted lines
> Johannes Schindelin wrote:
> > +/*
> > + * This is an ugly hack to avoid fgetc(), which is slow, as it is locking.
> > + * The argument "in" must be the same for all calls to this function!
> > + */
> > +static int fast_fgetc(FILE *in)
> > +{
> >
>
> Looks great to me, but shouldn't you add an "inline" for this one? Also,
> maybe a double the buffer size.No. This is an ugly hack, and not meant for application.
If that is substantially faster than the fgetc() version (and I want this be tested in a _real-world_ scenario, i.e. not the fgetc() alone, but a real mailsplit and a real mailinfo on a huge patch, with all three versions: fgets(), fgetc() and fast_fgetc())), then I would prefer having something like
struct line_reader {
FILE *in;
char buffer[4096];
int offset, int len;
char line[1024];
int linelen;
};and corresponding functions to read lines in that setting. Maybe it would even be better to have line be a strbuf, but I am not so sure on that.
Let's see what the tests show. Would you do them, please? "git format-patch --stdout bla..blub | /usr/bin/time git mailsplit -o." three times in succession should give you a good hint on the runtime.
Ciao, Dscho