On 3 April 2014 22:15, Julian Foad <julianf...@btopenworld.com> wrote:
>>> URL: http://svn.apache.org/viewvc?rev=1344347&view=rev
>
>>> Log:
>>> Remove about 15% of the cpu overhead of svnserve and httpd while running
>>> the test suite by introducing a very simple parser buffer in the config file
>>> parser code.
> [...]
>>>  * subversion/libsvn_subr/config_file.c
>>>    (parse_context_t): Add buffer and position variables. Use EOF as no
>>> ungetc var.
> [...]
>>>  Modified: subversion/trunk/subversion/libsvn_subr/config_file.c
>>> ==============================================================================
>>>  +
>>>  +  /* Parser buffer for getc() to avoid call overhead into several 
>>> libraries
>>>  +     for every character */
>>>  +  char parser_buffer[SVN_STREAM_CHUNK_SIZE];
> [...]
>
> This commit implements buffering of a generic stream, directly in the config 
> file parser. Would it
> not be better to implement buffering of a generic stream as a generic module?
>
This commit improved performance over buffer APR file, so switching to
back to buffered stream will degrade performance again.
Config parser also use parser_buffer knowledge to use extremle
optimized memchr() to find end of line to skip comment lines. Config
parsers used very often, that's because it should be optimized.


-- 
Ivan Zhakov

Reply via email to