Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


On Tue, 2011-09-20 at 11:27 +0200, Markus Mohrhard wrote:
The sc unit tests are slow because we use the filter-tests as an way
to test not only the import but also the first recalculation. We
havenow already about 10 files that we import and check and I have
some additional that are not yet finished.

So, here's my numbers from sc. --enable-dbgutil build, linux, x86_64
I did the make non-parallel, in -jX mode the two sc unit tests would be
run in parallel.

a) all already built, make in sc, i.e. check depends and do nothing

time make -sr build
real    0m4.115s

So there's a 4 second make setup cost there already for me.

b) rebuild one file, i.e. ccache + link

touch source/core/data/attarray.cxx
time make -sr build
real    0m43.462s

Ouch, but as expected, linking isn't very fast.

c) all built, make sc, i.e. check depends and run tests

time make -sr
real    0m11.275s

So there's apparently about 7 seconds spent in the tests, that's quite
long alright, much less than a link, but fairly long.

So I've now added a timer listener to our cppunit launcher to tell us
how long each test takes[1] and indeed it takes about 70ms to load a
.xls, 370ms for an equivalent .ods and about 500ms(?!) for an
equivalent .xlsx

So the problem isn't that loading files is inherently slow but that
loading .ods and .xlsx files is slow [2]

In an ideal world I imagine the best spent effort would be on improving
the import speed for .ods and .xlsx, seeing as that improves the
real-world case too.

As a quick hack it's possibly a fixed overhead cost per filter, so
bundling the various .ods and .xlsx tests together into one file per
format might knock a lot off the unit test time. It may then be the case
that additional content added to a single .ods/.xlsx is a tiny cost
relative to a fixed cost of loading one in the first place.

Or stick to xls for tests, that filter is faster :-)

[1] you need to define TIMETESTS in cppunittester/cppunittester.cxx to
get the timing information, maybe this is worth hooking off some command
line option or env variable ?
[2] in --enable-dbgutil mode anyway

C.


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.