Re: [PATCH] Update SBuf::trim

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Wed, 04 Jun 2014 02:22:17 +1200

On 4/06/2014 1:08 a.m., Alex Rousskov wrote:
> On 06/03/2014 04:46 AM, Amos Jeffries wrote:
>
>> This replaces the SBuf::trim() to use CharacterSet instead of an SBuf()
>> list of characters and memchr()
>>
>> It seems to be faster for CharacterSet lookup than repeated memchr
>> calls, but Im not certain of that. It is certainly makes simpler parser
>> code with trim and a predefined CharacterSet than static SBuf set of chars.
>
> I agree that CharacterSet membership test should be faster than repeated
> memchr() calls.
>
> No objections to this patch, although I suspect that any code calling
> SBuf::trim() should actually use Tokenizer instead; we may be optimizing
> code that should not be used in the first place.

The use-case that brought this up is scanning mime header lines.

  Tokenizer tok(...);
  SBuf line;
  while (tok.prefix(line, CharacterSet::LF)) {
    // drop optional trailing CR* sequence
    line.trim(CharacterSet::CR, false, true);
    ... use line content for something.

    .. skip tok past the LF, and repeat.
  }

If there are no other objections I will drop this in at some point prior
to the parser-ng merge. No rush on approval until then.

Amos
Received on Tue Jun 03 2014 - 14:22:27 MDT

This archive was generated by hypermail 2.2.0 : Tue Jun 03 2014 - 12:00:17 MDT