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.