Kent Gibson wrote:
thanks for your detailed response.

I would like to implement most of your suggestions.
Unfortunately, it seems that my bosses have decided
against keeping our OpenOffice solution. This could
very well be a failure on my part to write optimal
code, I don't know.
But while I am on my soapbox, I would just like to say
one thing. The thing that puts OpenOffice way ahead of
"the competition" is the API. I, and I suspect a lot
of possible OpenOffice customers would like to see a
faster api. I think the decision to stop using an ODF
solution is short sighted, but I can't seem to do much
about it.
a fast API is always highly appreciated but often the underlying architecture prevent this. Or it is a compromise between a fine grained API which allows modification on detailed level and|or more high level APIs covering the most often used features. In case of our API we have furthermore the flexibility of language independence which can be a performance barrier as well (i hope it is not to much).

I can only say that we try our best to find the best solution for OpenOffice.org in the future and that we have performance on our radar as well as usability.

I hope you have more luck on your next project with OpenOffice.org and that we can support you in all API related questions

Juergen



Thanks again for all the help and for creating a very
good tool.
--- Mathias Bauer <[EMAIL PROTECTED]> wrote:

Kent Gibson wrote:

There is no loading, we render each document from
scratch and always keep the result in memory. It
is
hard to pinpoint our bottlenecks. There is not one
particular place. However for example, inserting
into
the document and stlying each cell of a table are
pretty costly operations.
Our table API isn't very fast, that's true. We are
currently working on
a simplified API to insert tables that allows to
hand over attributes
for a larger bunch of cells or rows in one step. If
that was possible in
your case you could save some time here. It should
especially speed up
insertion of simple nxm-tables (n rows with m
columns) without any
subtables or rowspans.

I don't expect this new API and its implementation
to be ready before
the 2.2 release but perhaps it's interesting for you
to know that
something happens here. If you want you can use one
of our developer
builds for testing as soon as we have one that
contains this new API.

Just last week the biggest problem was with
frames. We
rely heavily on frames. After I inserted into the
doument say over a hundered frames I noticed a
severe
slow down, as if a memory leak. However I followed
Laurent Godard advice (thanks) and ensured the
controllers were locked and this problem is now
insignificant. But generally we would like to
still
boost overall performance if possible.
If your frames aren't anchored at the page (what
usually is the case) we
have another bottleneck in the rendering code if you
have a lot of
frames on one page (>100!). But currently we
consider this to be a bit
exotic. We applied some optimizations for this case
though (forgot
wether it will be in 2.1 or not).

This is is our setup: we have a tables, with
frames
inside the tables, anchored to the paragraphs.
Inside
these frames can be tables, text or images. To try
and
avoid round trips to the api we call macros which
create frames ( and page styles) . These macros
sometimes also insert the frame into the document.
Are you sure that your API roundtrip (I assume that
you talk about
remote calls) is really slower than a macro? Our
Basic is not famous for
 being the fastest on earth. Just a thought. At
least a small benchmark
is recommended.

Alternatively you could try C++ code instead of
macros and place it into
the OOo process as an extension (a service you can
call). This should
create the least possible overhead. Even
implementing this service in
Java could be an idea; OOo instantiates Java
extensions in its own
process. So while you still have a Java UNO bridge
between the Java code
and the OOo API it will be not interprocess call.

These almost always return the XTextFrame. We also
use
frame styles. Furthermore all text has a character
style and a paragraph style associated with it.
Perhaps you could save some time in making the most
often used styles
the default one of your document. It would save you
setting them explicitly.

The idea to do more processing with macros, so
that
there is less roundtripping sometimes works and
sometimes doesn't. The problem is that for example
sometimes I send all of the content for a table
and
try to let the macro do all the formatting, and it
often works ok, but sometimes I get funny side
effects
as if it is working too fast?! As soon as I switch
back to an algorithmn that uses less macros and
more
api, the results are more consistent.

I also still sometimes get funny side effects with
images. Sometimes I can render a document and the
image does not get scaled correctly. I render the
same
exact document without changing anything and it
gets
rendered ok.
Some API calls might require some formatting that
happens in the
background. Other API calls relying on this should
produce correct
results by forcing pending updates if necessary but
I can't exclude that
this doesn't happen always. Perhaps this could
explain some of your
"funny" problems. Did you try to force layout
updates before doing
"critical" calls?

I have played around quite a bit with the memory
settings but never really got a perfect setup.
The effect of the memory settings on performance on
decent computers is
heavily overrated. ;-)

With the peformance gain from locking the
controllers
I reckon if I could squeeze another 25% somewhere
I
would be very satisfied. But I am not sure how to
do
it. I would hate to waste a lot of time trying to
build OpenOffice and see no gain.
The problem is that a real helpful tip isn't
possible without knowing
exactly which operations are the most painful for
you (from a
performance perspective). I tried to address the few
points you
mentioned, perhaps there's something useful in it.

Best regards,
Mathias

--
Mathias Bauer - OpenOffice.org Application Framework
Project Lead
Please reply to the list only, [EMAIL PROTECTED]
is a spam sink.


---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]




__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to