[augeas-devel] [PATCH 0 of 4] Some performance improvements
Raphaël Pinson
raphink at gmail.com
Sat Aug 9 09:09:52 UTC 2008
Great! Looking forward to testing that!
On Sat, Aug 9, 2008 at 12:46 AM, David Lutterkort <dlutter at redhat.com>wrote:
> As twoerner and raphink noticed on IRC, Augeas is pretty slow when
> processing large files, e.g. an /etc/hosts with 10000 lines.
>
> These patches address some of the slowness by eliminating some quadratic
> behavior and reducing general overhead in a few places.
>
> To try them, I did two tests: 'augtool quit' and doing 'set
> /files/etc/hosts/10/alias[1] newalias' and then 'save', the first to test
> the speed of parsing, the second to test the speed of a complete roundtrip,
> including writing a changed file out.
>
> Each test was done on /etc/hosts files of varying sizes; the first column
> in the tables below is the number of lines in those files, where each line
> had an IP address, a canonical name and one alias.
>
> Before applying these patches, I got the following times on my laptop
> (T60). Note that I built with -O2 for the tests - optimization seems to
> double the performance of Augeas in general.
>
>
> parse only parse + save
>
> 64 0.06s 64 0.09s
> 128 0.04s 128 0.11s
> 256 0.09s 256 0.18s
> 512 0.07s 512 0.34s
> 1024 0.11s 1024 0.61s
> 2048 0.19s 2048 1.18s
> 4096 0.41s 4096 2.60s
> 8192 0.97s 8192 7.49s
> 16384 2.65s 16384 36.25s
> 32768 8.80s 32768 > 200s
>
> After applying them, I get
>
> parse only parse + save
>
> 64 0.06s 64 0.10s
> 128 0.05s 128 0.07s
> 256 0.05s 256 0.09s
> 512 0.08s 512 0.15s
> 1024 0.09s 1024 0.25s
> 2048 0.15s 2048 0.51s
> 4096 0.28s 4096 1.13s
> 8192 0.53s 8192 2.93s
> 16384 1.03s 16384 11.72s
> 32768 2.13s 32768 108.02s
>
> That's still not as good as I would like it (especially for
> saving). There's still two fairly obvious ways to optimize further:
>
> (1) The internal 'dict' data structure needs to be turned into a hash
> table (instead of being a linked list)
> (2) The regexp matcher is called way too often - we throw away a lot of
> information and regenerate that later by calling the matcher
> again. It would be much cleaner to change the internals so that they
> first construct an explicit parse tree and then process it, rather
> than the current way of interleaving the two
>
> David
>
> 5 files changed, 98 insertions(+), 38 deletions(-)
> src/get.c | 53 +++++++++++++++++++++++++++++++++--------------------
> src/list.h | 30 ++++++++++++++++++++++++++++++
> src/put.c | 41 +++++++++++++++++++++++------------------
> src/regexp.c | 8 ++++++++
> src/syntax.h | 4 ++++
>
> _______________________________________________
> augeas-devel mailing list
> augeas-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/augeas-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/augeas-devel/attachments/20080809/fc317c8e/attachment.htm>
More information about the augeas-devel
mailing list